タグ

Javaとprogrammingに関するsinsengumi-2のブックマーク (64)

  • Scala School

    Other Languages: 한국어 Русский 简体中文 About Scala school started as a series of lectures at Twitter to prepare experienced engineers to be productive Scala programmers. Scala is a relatively new language, but draws on many familiar concepts. Thus, these lectures assumed the audience knew the concepts and showed how to use them in Scala. We found this an effective way of getting new engineers up to spe

  • Javaの匿名クラスを使ってかっこよくオブジェクトを初期化するテクニック - 矢野勉のはてな日記

    JavaJavaの匿名クラスはすごくかわしいかわいい技術でいろいろキモイことができます。匿名クラスは基的に「サブクラス生成のための特殊記法」であって、クロージャではありません。匿名クラスとクロージャを対比して云々するのはそもそも誤りです。なんならクロージャでサブクラス作ってみなよってことです。匿名クラスによって、Javaではなにかのサブクラスを任意の場所で即座に作り出すことが出来るんです。なにかのクラスのメソッドを三つほど書き換えた新しいクラスをさっと作れるのは、なかなか面白い機能ですよ。 その匿名クラスを利用したカッコイイ(でも使うのは躊躇されている)記法として、次のようなのがあります。(追記:この用法はヨシオリさんところで見たのが最初です) List list = new ArrayList() {{add("a"); add("b"); add("c");}}; Javaには「初期

  • イマドキのWebシステムに向けて - nemuzukaの「明日から本気出す」

    最近のWebシステムは、クライアント依存しづらくしなきゃだめよねー、ということで、サーバサイドにはJava、クライアントはJSON+JavaScriptでレンダリングという構成でシステム構築を考えております。そんな中で気づいた事をメモっとこうかなぁ、と。 なんでそんな構成にするの? PCのWebブラウザだけでなくスマフォのブラウザやネィティブなアプリに対応しやすくするためです。サーバサイド処理を変えることなくクライアント側の処理で対応させちゃおうということです。サーバサイドの処理はJavaでなくてもPHPRubyでもなんでも良いわけです。クライアント側と会話さえできれば。 サクサク感がたまらない 今まではsubmitして画面表示しなおすという方式が当たり前だったのですが、この方式に慣れてしまうと、画面遷移がモサく感じます。何か、ボタンを押すたびに画面が切り替わってスクロールバーが一番上に

    イマドキのWebシステムに向けて - nemuzukaの「明日から本気出す」
  • プログラマなら人月なんかさっさと超えろ - 矢野勉のはてな日記

    Java, プログラミングノリノリで書いてみる。 人月というのは「人月の神話」以来、現場の技術者にとっては「お金の計算にしか使えない単位」なのですが、発注者側に分かりやすいということでいまでも大はやりしています。というか受注者側もまじめにこの単位で計算しています。 そしてJavaの世界というのは、私のようにJavaが大好きだからやってる、という人間はすごく少数派で、「そろそろJavaでもやっとくか」「Strutsの使い方覚えたからもういいか」「できればJavaなんかいじりたくないなー。俺も早くプログラマに『これやっといて』って言えるようになりたい」という人のほうが多いのが実情なんですね。その点Rubyの世界は、今は「好きだからやってる」人が圧倒的でしょう。プログラム能力の高いJavaプログラマを探すのは、プログラム能力の高いRubyプログラマを探すよりずっと大変だろうと思う。 Javaの世

  • java.langパッケージとグラフィックの基本処理

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

  • 学校では教えてくれない System.out.println() - 郡山からHello World

    実際に学校で教えてくれるかは別として System.out.println()について考えてみよう。System.out.println()は、Javaを勉強しようとする人が初期の段階から利用するメソッドである。が、しかし、実は謎だらけなのである。 まずは、System.out.println()を分解して考えてみる。 Systemjava.lang.Systemである。 outはjava.lang.Systemのフィールドである。 Systemクラスのjavadocを眺めると、outの型はPrintStreamであることがわかる。 PrintStreamのjavadocを眺めると、printlnメソッドが存在する。 つまり、System.outにPrintStreamのオブジェクトが代入されていて、そのオブジェクトのprintlnメソッドを呼んでいるだけでる。このメソッドを実行すること

    学校では教えてくれない System.out.println() - 郡山からHello World
  • Javaのhello worldの読み方 | mwSoft

    前書き お馴染み、hello worldのソース。 class Hello { public static void main(String[] args) { System.out.println("hello world"); } } このコードはコンパイルされると、こんなバイトコードになります。 ca fe ba be 00 00 00 32 00 22 07 00 02 01 00 05 48 65 6c 6c 6f 07 00 04 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 43 6f 64 65 0a 00 03 00 09 0c 00 05 00 06 01 00 0f 4c 69 6e 65 4e

  • Javadocを書く - しげるメモ

    最近は時間を作ってEffective Javaの2版をよんでます。 Effective Java (Java Series) 作者: Joshua Bloch出版社/メーカー: Prentice Hall発売日: 2008/05/08メディア: ペーパーバック購入: 6人 クリック: 65回この商品を含むブログ (42件) を見る ほとんど1版と同じ内容ですが、"Item 44: Write doc comments for all exposed API elements" を読んでよくまとまってるなと思ったので、触発されてメモがてらに私のやり方を。 引用の2段落目は基的に超約。 どこに書くか If an API is to be usable, it must be documented. ユーザが利用可能なすべてのAPIJavadocを書く。 これはとりあえず必須だと思います。ち

    Javadocを書く - しげるメモ
  • 異常系の判断基準 - しげるメモ

    id:daisuke-m と話してたことをまとめる。 元ネタはThrowableについて気出して考えてみた - 都元ダイスケ IT-PRESS。 異常が起こったとき、だいたい下の方法で対処してます。 RuntimeException系をスロー Exception系をスロー AssertionErrorをスロー (またはassert文の利用) Error系をスロー 特殊値(null, -1, など)を返す で、次のようなものがあるという想定です。 自分が作っているAPI (API) APIを利用するアプリケーション (アプリケーション) 環境 (環境) Javaランタイムライブラリ APIが利用する外部ライブラリ APIが利用するフレームワーク 外部デバイス (人間の入力も含む) アプリケーションへのコールバック など、APIから完全な制御ができないもの RuntimeException系

    異常系の判断基準 - しげるメモ
  • 【祝】:Java SE 7 正式リリース

    【祝】:Java SE 7 正式リリース 2011年7月29日 at 2:00 午前 3件のコメント 日(2011年07月28日(日時間29日 日でもぎりぎり28日だったようです。))Java SE 7 が正式にリリースされました。5年ぶりのリリースとなる Java SE 7 ですが、Java SE 7 は進化として位置づけられているバージョンになります。ここで言う進化とは言語仕様に対する大幅な変更はなく、開発生産性の向上やライブラリのアップデート等が多く、今まで Java SE 5, 6 等で開発をしてきて頂いた Java 開発者は比較的かんてたんに移行が可能になっています。Project Coin, NIO.2 等により可読性、開発生産性が向上した最新の Java SE を入手頂き是非開発現場でご使用ください。 サポート環境はこちら Java SE 7に関するドキュメント チュー

    【祝】:Java SE 7 正式リリース
  • クローズ処理で例外は発生するのか? - rabbit2goのブログ

    昔から疑問に思っているのだけど、ファイルやストリームでのclose処理ではどんな条件の時に例外(エラー)が発生するのだろうか?例えば、open処理ならファイルが存在しないと直ぐに例外が発生するし、write処理はディスク容量が無いとか書き込み権限がないと例外が発生する。read処理もネットワークでの読み込み時に接続が切れたりすると例外が発生しやすい。しかし、経験的に言ってclose処理ではなかなか例外が起こらないようだ。 例えば、JavaのInputStream#close()ではJavaDocに下記の説明が記載されている。仕様として「入出力エラー」が発生する可能性は確かに存在するらしい。 例外: IOException - 入出力エラーが発生した場合 Oracle Technology Network for Java Developers | Oracle Technology Net

    クローズ処理で例外は発生するのか? - rabbit2goのブログ
  • JUnitの使いこなし方を学ぶ本「JUnitイン・アクション」 - rabbit2goのブログ

    テスト駆動開発やJUnitを使い始めた頃に読んだ。手元のは2004年5月発行の初版なので、もう6年(!)も前のになる。JUnit自体は(やや乱暴な言い方かも知れないけど)Assertによる検証をシステマティックに行うものであり、特に難しいものではない。例えば、「1+1の演算結果」が「期待通りの値である2になるか?」を確認するというという基的なサンプルがよく紹介されているし、使い方としてはこれに尽きると思う。 むしろ難しいのは、ソフトウェアの設計として「いかにテストしやすい形の構成にするか?」という点だろう。仕様書通りに組み上げたソフトウェアでは残念ながら粒度が荒すぎるし、テスト対象も広過ぎる。様々なしがらみが付いて回るので、検証のためにはダミーデータを準備しておく必要があるかも知れない。だから、コードの設計を少し変えて、検証しやすい形態にする方がずっと重要なのだ。これらの考え方を総

    JUnitの使いこなし方を学ぶ本「JUnitイン・アクション」 - rabbit2goのブログ
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
  • staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して

    何が良いプログラムかという点はもちろん人やコンテキストによって異なりますが、少なくともプログラマーとしての私の信念としては、 機能拡張や変更が容易なプログラム 単体試験によって正しく動作することの検証が容易なプログラム どういった内容が記述されているか理解しやすいプログラム といったものこそ、「品質の高い」プログラムが持つべき性質として、まず真っ先に挙げるべき事項であると考えています。もちろん、前提として顧客の要件に従うということは大切なことです。しかし、一般に要件は長期にわたって変更されるものですし、使い捨てのプログラムを除けば、プログラムを長期にわたって保守するコストという点も見過ごすべきではありません。したがって、ユーザーの目には触れない上記の性質をもっと重視すべきだと思うのです。 DRYの原理 上記のような性質を満たすプログラムを作る上で大切になってくる原理として、DRYの原理とい

    staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して
  • (補足) クラスローダ

    1. クラスローダ 「クラスローダ」とは、クラスのロードやリソース(ファイル)の検索を担当するオブジェクトで、「java.lang.ClassLoader」を継承したクラスのインスタンスです。全てのクラスはクラスローダによってアプリケーションにロードされる事になっており、各クラスは自身をロードしたクラスローダへの参照を保持しています。そのクラスローダは「java.lang.Class」の「getClassLoader」メソッドで取得することができます。 クラスローダはツリー構造をしており、関連する親クラスローダを1つ所有しています。ツリー構造の大元に位置するクラスローダを「ブートストラップ・クラスローダ」と呼びます。これはJava仮想マシンに組み込まれており、Javaアプリケーションの起動時に、最初に読み込まれるものです。ブートストラップ・クラスローダはJava標準のライブラリや、Java

  • 末尾再帰 - うなの日記

    ScalaByExample - Example 4.6 Tail Recursionより。Scalaでは末尾再帰は最適化されます。無駄なスタックを生成しないために、再帰を利用する関数は末尾再帰となるように設計しましょう、とのこと。 末尾再帰とは 再帰呼び出しを含む手続きが、自分自身の呼び出しをその手続きの末尾に行うように記述をすること。 Wikipedia - 末尾再帰より。 例として「1から引数までの総和を計算する関数」の末尾再帰版とそうでない版を作ってみました。 // 1から引数までの総和を計算する関数 // 末尾再帰でない版 def sum( i:int ):int = { if ( i == 0 ) i else i + sum(i-1) } // 末尾再帰版 def sumTailCalls( i:int ):int = { def _sum( j:int, total:int

    末尾再帰 - うなの日記
  • いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して

    正しく意味を理解している方にとっては、まったく常識レベルの話であり、何をいまさらと思われる方々も多いかと思いますが、大規模案件のレガシーコードなど、私が仕事で見かけるJavaのコードを読むと、「このコードを書いたSEやPGの方々は、はたして継承の意味を正しく理解していないのではないか」と思われる設計のコードに出会うことが少なからずあります。現在では改良されましたが(Javaプログラミング能力認定試験の問題がかなり改善されていました - 達人プログラマーを目指して)、以前のJavaプログラム認定試験の問題は、そうした不適切な設計がされている典型的な例となっていたのですが、実際、SI業界ではあのような品質のコードのシステムが今でも現役で多数稼動しているというだけでなく、現在でも新たに生み出されているというのは残念ながら紛れもない事実のようなのです。 確かに新人研修で「哺乳類を継承して犬クラスと

    いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して
  • Java脳でもわかるObjective-C入門

    ちょいAndroidTypescriptいいよ。JenkinsとかGradleとか。APTもいいなー。 photo: Some rights reserved by yukiv Javaと比較しながら「へぇーObjective-Cってそういう感じか」と理解した気になろう。 流れ 軽くジャブ クラスファイルの構成 コメント import文 変数の定義 クラス定義 メソッドの定義 メッセージ式 プロパティ セレクタ プロトコル カテゴリ 文字列リテラル ログ出力 ひと通り使ってみる感じのソース まとめ 軽くジャブ まずは以下のソースを眺める //SampleClass.h #import <Foundation/Foundation.h> #import "SampleClassDelegate.h" @interface SampleClass : NSObject <sampleclas

    Java脳でもわかるObjective-C入門
  • いいから聞け! 俺が文字コードについて教えてやるよ その2(Javaの文字コード編) - 谷本 心 in せろ部屋

    前回のエントリーでは「Java関係ないやん」的なツッコミも受けましたが、 今回からは、Javaを前提にしていきます。 Javaで文字から文字コードを作る 新人くん「Javaで文字から文字コードを作りたいんですが、どうすれば良いんですか?」 先輩社員「getBytesすれば一発だね」 新人くん「getBytesした後のバイト配列から上手く文字列を作れないんですが・・・」 先輩社員「それは別の話だね」 前回のエントリーでは、WordやIMEを利用した文字と文字コードの変換方法を説明しましたが、 では、Javaではどうやれば良いのでしょうか。 Javaで文字から文字コードを作るには、 先輩社員も言っている通り、String#getBytes(charset)するだけです。 具体的なコードは、以下のようになります。 String str = "あいうえお"; byte[] utf8 = str.g

    いいから聞け! 俺が文字コードについて教えてやるよ その2(Javaの文字コード編) - 谷本 心 in せろ部屋
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer