きっかけ こんなツイートがRTで流れてきた。 Java技術者です、って求職してきた人にする質問の一問目は 「なぜフィールドはprivateにしてgetter/setterプロパティを書くべきなのだと思いますか?」 がいいのではないかと思い始めた。— ゆば大好き (@yuba) 2014, 9月 26 そのとき思ったこと 「変数をプライベートにして、それに対してアクセサを定義する」っていうのはちょっと違う気がする。— S.Osa (@osa522) 2014, 9月 26 「外部に公開するインターフェイスを決定して、そのために必要な変数をプライベートで保持する」っていう感じ。— S.Osa (@osa522) 2014, 9月 26 変数ありきなのではなく、インターフェイスありき。 インスタンスが持っている変数は実装の詳細であって、そのインスタンスのメソッドを呼び出す側からするとどうでも良い
Doma 2へようこそ Doma 2はJava 8+向けのデータベースアクセスフレームワークです。Domaにはさまざまな強みがあります。 コンパイル時にアノテーションプロセッサーを使用して、ソースコードを検証および生成します。 型安全なCriteria APIを提供します。 Kotlinをサポートします "two-way SQL"と呼ばれるSQLテンプレートをサポートします。 他のライブラリに依存しません。 このドキュメントは、以下のセクションで構成されています。 ユーザー向けドキュメンテーション Domaについて リンク集 私たちのドキュメントの改善とローカライズをお手伝いください。 ドキュメントに関する英語版および一般的な問題については、 GitHub リポジトリ に issue や pull request を追加してください。 日本語にローカライズするには、Crowdin プロジ
バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve
こんにちは! アキバです。 ...T3ブログは初登場かもしれません。ハジメマシテ。 以後お見知りおきを。 いよいよ、2014年3月、Java8が正式公開されますね。 なんと言っても、Java8の注目機能はラムダ式ですので、ラムダ式や型推論に関する記事は多いです。 世の中で「Java8」と検索すると、皆さんいろいろと記事を書かれているので、おおよその事はこれで分かっちゃうような気がします。 が、 実は地味に便利なAPIが追加されていたりすることを最近知りました。 これはあまり触れられていないぞ、と。 というわけで、このエントリでは、あまり日本語で情報の無い、しかし地味に便利なAPIに実際に触れてみます。 大事なところなので2回強調して書いてみました。 今回は、前編として4つ紹介します。 ※APIの紹介と言いつつ、コードにはラムダ式を使ったコードが普通に出てるので、ご了承ください。 (むしろ、
Javaトラブルでは『情報がなくて、再現もなかなかしません』といった状況に陥ることがある。このような状況を回避するために、以下の3つの代表的なトラブルを例に、アプリケーションサーバを再起動する前に何を取得すれば良いのかをまとめてみる。 アプリケーションから応答がない アプリケーションが遅い ヒープメモリが足りない(OutOfMemoryErrorの発生) アプリケーションから応答がない 取得する情報 スレッドダンプ データ取得方法 スレッドダンプとは、コマンド実行時点でのJavaスレッド実行状態を出力したものである。応答がない場合、何らかの要因によりどこかで処理が止まっていることが想定される。スレッドダンプは『どこで止まっているのか?』を切り分けるのに大切な情報である。 取得方法はJDKのバージョンによって色々ある。 kill -3 <pid> (少なくとも1.4.2にはある〜JDK7でも
InfoQから。 http://www.infoq.com/news/2013/12/Oracle-Tunes-Java-String Stringのような基本型に大きな仕様変更が入ることは稀ですが、 1.7.0_06でアグレッシブな変更が入ったらしいです。 以下、適当和訳。 In an ongoing effort to improve Java performance, Oracle has announced a change in the internal representation of strings in the String class as of Java 1.7.0_06. The change, removing two non-static fields from the underlying String implementation, was done to
個人の日記レベルですんません、現象のみ。 書いてるコードに関しては型指定してあげれば解決したのだけど、再現させるのに苦労した。 まず、インタフェースを2つ用意。 interface A{} interface B{} それから、その両方を実装したクラスをふたつ用意 static class C implements A,B{} static class D implements A,B{} 片方だけ実装したクラスもふたつ用意 static class E implements A{} static class F implements A{} そんで、同じ型を継承してGでくるんだものを複数とって、共通の基底クラスをGでくるんだものとして返すメソッドを定義。 ※この文章では、実装したインタフェースも基底クラスと表現します。 static <T> G<T> o(G<? extends T>..
2013年のJava Adventカレンダーの11日目のエントリーです。 前日のエントリーは、Satoyuki Tsukanoさんのtwitterとelasticsearchを簡単に連携させる(Apache Camel入門 その2 コンポーネントについて) - Taste of Tech Topics、 明日はkisさんです。 はじめに メジャーバージョンアップとなるJava SE 8が年明けの3月に正式版リリース(GA:General Availability)を迎えます。メジャーバージョンアップでは、目玉機能には注目が集まるのであちこちでその内容が紹介されます。たとえば、Java SE 8ではラムダ式とStream API、Date and Time APIなどが目玉機能となります。これらの記事はすでにあちこちで見かけますね。 一方、既存APIへのクラス・メソッドの追加は地味なので注目
実践Scala読んでたら継続モナドのこと理解出来そうな気がして来たので実装してみた。Javaで。 やれそうな気がする時は、やれる! この辺がとても参考になった。 Haskellの継続モナド(Continuation Monad)を理解するポイント - よくわかりません howm wiki - モナド 簡単な説明 上のサイトにある説明、 継続といいつつ、Contが表すのは継続というより、CPSな関数。 これでようやく何をする機能なのか分かった。モナドというのは、基本的に何かを包んで、それによって合成したり後から利用したりを可能にするものなんだけど、継続モナドの場合、包まれている「何か」は、CPS(継続渡し形式)で書かれた関数ということだ。 いきなり高度なサンプルしか無いのが分かりにくい点だと思うので、簡単な具体例を使いながら実装を考えていくよ。 継続渡し形式とは (※前に書いた「内部イテレー
土曜にJJUG CCC 2013 Fall(http://www.java-users.jp/?page_id=695)へ行ってきました。 事前にお知らせするのを忘れていましたが、17:15〜18:05のセッションでJVMのソースコードリーディングについてお話ししましたので、発表資料を公開します。 R5-5 JVMコードリーディング入門 〜JVMのOS抽象化レイヤーについて〜 JVMのコードを読みはじめたばかりの方を対象に、JVMとOSのメモリを中心とした関係性についてお話しします。JVMはOSからどのようにメモリを確保しているのでしょうか? そんな素朴な疑問をもとに、JVMのコードを楽しく追いかけてみましょう。※このセッションは入門者向けです。バイトコードやGCについては扱いません。 虎塚 (さくらば組) http://www.java-users.jp/?page_id=709#r5-
昨日のSeasar2のエントリについたコメントなどで、「とはいえ代わりに何つかうの?」みたいな話が出てたので、とりあえずJava EEのWebフレームワークについて簡単にまとめてみます。 Java SE 8+Java EE 7+lombokで書いていますが、基本的なところはJava SE 7+Java EE 6でも大丈夫です。 なので、今どきとは書いてますが、基本的には2009年12月のJava EE 6ということで、実はすでに4年近くたってます。 何も考えてない なんも難しいこと考えないなら、やっぱJSPが楽ですよね。 なんでも書けちゃう。 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content=
本ブログの読者の皆様方におかれましては、JavaのArrayListとLinkedListの 実装の違いにより性能に差があることは、当然のように熟知のことと存じあげます。 しかし! 実際にいかほどの差があるのか、それを数値で説明できるという方はどれほどいらっしゃるでしょうか。 いきなり丁寧語の煽りでスタートしました @cero_t です。 そう、今日のテーマはマイクロベンチマークです。 たとえば、 文字列を + で結合すると遅い。 ArrayListの初期化時にはサイズを指定したほうが良い。 ArrayListはループ処理が得意、LinkedListは途中の追加が得意。 など、よくあるパフォーマンスのプラクティスについては既に知っているという方も多いと思うのですが 実際に何倍ぐらいの差なのか(どれぐらいのオーダーの差なのか)を数値で話すことができるという方は、 あまり多くないように思います
2013年9月22日から5日間にわたって、Javaの最大の技術カンファレンスであるJavaOneがサンフランシスコで開催されました。 毎年サンフランシスコで行われるJavaOneも今年で18回、主催がオラクルに変わってから4回目となります。オラクルになってはじめてのJavaOneでは参加者がかなり減ってしまいましたが、年を追うごとに参加者が増えています。 今年も正式な参加者数は発表されていませんが、昨年よりも確実に参加者が増えています。もちろん最盛期の頃にはとても追いつきませんが、再びJavaに注目が集まってきていることがうかがえます。 今年のJavaOneは22日に開催されたストラテジーキーノート、テクニカルキーノートを皮切りに、300以上のセッション、100以上のBOFが行われました。 そこで、2回にわたってJavaOneレポートをお送りまします。前編ではキーノートに関してレポートし、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く