「Java SE 9」がいよいよ7月リリース。櫻庭祐一氏と吉田真也氏に注目ポイント、移行時の留意点を聞いた 「Java SE 9」の正式リリースが2017年7月に迫った。新機能の導入でさらに進化するJava SE 9の注目ポイントなどについて、Java Championの櫻庭祐一氏とOpenJDKコミッターの吉田真也氏に聞いた。 “待ちに待った”Java SE 9リリース 2017年7月、いよいよJava SEの最新版となる「Java SE 9」がリリースされる予定だ。「Project Jigsaw」や「JShell」などの新機能が追加されるJava SE 9の登場により、Java開発はどう変わる可能性があるのか?Java Championの櫻庭祐一氏と、OpenJDKにおいてJShellのコミッターを務める吉田真也氏に話を聞いた。 ──Java SE 9のリリースが7月に迫りました。今

一人でプログラムを書いてたりすると、環境によってはあまりコードの書き方には指摘を受けなくて困りますよね。プロになっても、曲がりなりにもちゃんと動くコードを書けてしまうとあまりに当たり前のことなんかは指摘されることも稀で、そのままある程度偉くなっちゃった日には、もはや自分で気付くしかなくなってしまいます。 FindBugsとか、EffectiveJavaなら使ったり読んでみたり読ませたりすることはできますが、それ以前のところって難しいんですよね。よいコードと言うよりそれが当たり前だと思われているので、指摘するにしても「こうすればいいよ」(アドバイス)じゃなくて「なんでこうしてないの?」(詰問)になってしまいがちです。 そこで、最近そういうJavaニュービーに指摘している(したい)ことの多い、Javaの基礎的な事柄をまとめてみました。ワタシJavaチョットデキルって人は、これ以外にもやりがち

Multiple abstraction levels Ebean provides multiple levels of query abstraction.ORM Queries, mixed withSQL DTO QueriesSqlQuery and JDBC Work at the highest level of abstraction and drop down levels as needed. Benefits ofORM Automatically avoid N+1 L2 caching to reducedatabase load Queries mixingdatabase and L2 cache Automatically tuneORM queries Elasticsearch for search or L3 cache.Docker
本日のエントリーはJava Advent Calendarの25日目です。昨日は @mike_neck さんのmike、mikeなるままに…: hamcrestを拡張してmoreThanとか作ってみたでした。本日はクリスマスですが、Advent Calendarはまだまだ続きます。明日はt.ogisawaさんのhttp://webinter.sakura.ne.jp/pbd/210です。 さて、今年はJava7がリリースされましたね。try-with-resources、diamond operator、invoke dynamic、Folk/Join framework…魅力的な新機能の数々が、多くの人によって紹介されています。が、Java7の変更はそれだけじゃないはず。小粒だが、キラリと光る変更がきっとあるはず。ということで、Java6とJava7のsrc.zipを比較してみました。小

この記事はJava Advent Calendar 2011 の22日の記事です。 昨日は zinbe さんでjsoupとMicrosoft TranslatorAPIを使ってJSRの日本語リストを作るでした。明日は yamadamn さんでencodeURLとencodeRedirectURLAdd Starです。JavaCC って何するもの?Java Compiler Compiler の略で、設定ファイルから Lexer (字句解析器)と Parser (構文解析器)のJava コードを生成してくれるソフトです。と、そんなこと言葉でつらつら書いてても読んでてもおもしろくないので手を動かしましょう。 入手先JavaCC Home が公式サイトですね。インストールはダウンロードして展開してパスを通せば終わりのようです。ようです、って書いてるのは、僕の場合 Ubuntu で s
この記事はJava Advent Calendar 2011 の10日目です。wikiばかりで全くblogを書かないので企画の力に頼らせていただきました! 昨日の記事 << | >>明日の記事 今日はGoogleのJavaユーティリティライブラリであるGuava Librariesの最新版 10.0.1 で、新たにパッケージごと追加されたAPIであるEventBusについて紹介します。このAPIはJavaDocに@Betaアノテーションが付いており、ベータ機能であるため、将来的に内容が変更される可能性があります。 EventBusって? レイヤー分割されたコンポーネントで構成されたシステムでは、上位層から下位層を呼び出す場合はメソッドを直接呼出し、下位層から上位層を呼び出す場合は相互依存を避けるためイベント通知の機構(publish-subscribeモデル、コールバック)を利用すること
このエントリーは、@cero-tさんのエントリーの次で、Java Advent Calendar 2011の6番目のエントリーです。自分自身の今年のメインテーマがTDD(テスト駆動開発)と言う事もあり、関連エントリーとしてJUnitについて書きたいかと思います。今更JUnit?と思われた方も普段からJUnitを使っていあなたも気軽にお読みください。尚、色々な話題を駆け足で紹介するので、どれも簡単な紹介程度になってしまいますが、ご了承願います。 JUnit4 スタイル JUnitがアノテーションに対応し結構な月日が流れましたが、古いコーディング規約のままでテストコードを書いていませんか?JUnit4では、アノテーションとアサーションを使ったテストコードを書くことが基本スタイルです。かつては、TestCaseのサブクラスを作り、testではじまるメソッドを定義していましたが、今は Testアノ
Java7でList/TreeMap/TreeSetのIteratorがかなり早くなって、 ArrayListのforeach文(拡張for文)も、普通のfor文より早くなりました。 コレクションの細かい話、だが面白い! - 谷本 心 in せろ部屋 そうなんですか!? …と思って試してみたところ、ArrayList の foreach文(拡張for文)がJava6 →Java7 で約2.5倍速くなっていました。 手元の環境では、普通の for 文より速くなることはなかったものの、ほとんど気になならないぐらいの差でした。 - 2011年11月26日 訂正: 速くなっていたのは ClientVM で実行した場合のみで、ServerVM では変わっていませんでした。 詳しくは、Javaの実行速度を調べるなら、ClientVM/SeverVM の違いを考慮しておくべきでした。 - 地平線に行
先日のオープンラボ備後で、Oracleの寺田さんにご紹介いただいたGlassfish。クラスタ環境が面白そうだったので、自分でも試してみました。 前準備 今回も例によってUbuntu環境。Ubuntu 10.04をインストールしたマシンを2台用意します。自分は仮想マシンで用意しました。 また、お互いホスト名で名前解決できるように/etc/hosts辺りを設定しておきます。 合わせてJavaも両マシンにインストール。デフォルトではsshdが入ってないようなのでこれもapt-get*1して導入しておきます。 自分は以下のような構成で実験しました。ホスト名:misaka -Glassfish DASサーバホスト名:sister1 -Glassfish Nodeサーバ DAS(Domain Administration Server)サーバはクラスタ全体をコントロールする管理サーバ。これに

JavaFX 2.0ではWebEngineといういわゆる組み込みブラウザが登場した。コンポーネントとしてはWebViewという入れ物があって、この2つを組み合わせて扱う。実際のコードの大半はWebEngineを使うことになるだろう。 組み込みブラウザ利用の基礎 WebViewとWebEngineの使い方はコードを見てもらえばわかりやすいか。 WebEngine we = new WebEngine(); WebView wv = new WebView(we); container.getChildren().add(wv); we.load("http://www.yahoo.co.jp"); WebEngineに対して設定しているのがわかるはず。Javascriptの実行 we.executeScript("hoge();"); これでhogeという関数が呼ばれる。簡単。 このメソッ
JDK7 を使う準備が出来たので、体当たりします。Java7 での個人的に嬉しいのが try-with-resources Statement です。AutoCloseable (を実装したクラス)の変数をこの構文で初期化すると、勝手に close してくれるってものです。 ではさらっと使ってみます。 public class TryWithResources { public static void main(String[] args) { try (AutoCloseable imp = new AutoCloseableImpl()) { // New! System.out.println("hoge"); } catch(Exception e) { System.out.println("catch:" + e); } finally { System.out.printl
今回はJavaプログラマにはおなじみ、java.util.Dateについて考察します。java.util.Dateは、Javaの初版から含まれているAPIで、これまでに使い勝手の悪さを散々叩かれながらも、いまだリプレイスされずに使われ続けている、とても残念なクラスです。このクラスに対する苦情を挙げていくと、思いつくだけでも、 日付・時刻フィールドを直接設定できない(一応可能ではあるが非推奨である)。 月フィールドが 0 から始まる(ただしget/setするメソッドは非推奨である)。 CalendarやTimeZoneなしでは時差を表現できない。 DateFormatがなければ(あっても?)まともに文字列表現も生成できない。 toString() の出力形式が最近主流のISO 8601形式でない。 日時の加算や減算ができない(Calendarの使い勝手の悪いメソッドを使えば可能)。 JDK
10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。Java CoreAPI JDKインストールしたディレクトリに入ってるsrc.zipを展開すると入ってるから読むと良いよ。 すぐ近くにあるのから読むってのはメンタル的に楽でいい。 厳密にはOSSじゃなくて単に公開されてるってだけなんだけども、JavaプログラマなのにコアAPIのコード読んでないとか無いよね? どれから読めば良いか分からんかったら、java.langjava.utiljava.iojava.text 辺りをまずはキチンと理解すること。当然コードを読み終わったら、それを使ってコードを書く事。 OpenJDK http://hg.openjdk.java.net/jdk7/jdk7 OpenJDKを読むことで、プログラム言語してのJavaではな
Java SE 7徹底理解の2回目である今月は、並行処理のフレームワークについて紹介していきます。Javaは1.0がリリースされた当初から、スレッドを使用することができました。筆者もJava 1.0で簡単にスレッドが使えることに感動したことを覚えています。 しかし、スレッドを安易に使ってしまうと、デッドロックやデータの破壊を引き起こしかねません。スレッドクラスは簡単に使えるものの、使いこなすには並列/並行処理についての適切な知識を必要としたのです。 そこで、より簡単に並列/並行処理を使うためのフレームワークであるConcurrency UtilitiesがJ2SE 5.0で導入されました。 Concurrency Utilitiesは非同期処理APIや、スレッドセーフで高性能な並行コレクション、ラッチやセマフォなどのロック機構、アトミック処理など並列/並行処理のためのさまざまな機能が含ま

十年一昔といいますが、文字通り一昔前の書籍ではJ2EEのEJBコンポーネントはプロセスが分散化されたリモート呼び出しにより処理を行う分散コンポーネントとして説明されています。そして、残念ながら現状Java EE関連の日本語の書籍はこうした古い時代に書かれたものがほとんどとなっています。それゆえ、 開発効率がきわめて悪い 実行性能が悪い*1 仕様がきわめて複雑で理解が大変 といった悪いイメージが定着してしまっているのではないかと思います。しかしながら、最新バージョンのJava EE6では、Spring、Guice、SeamなどのOSSの軽量コンテナのアイデアを取り込むことにより、以前とは比較にならないくらい開発効率が改善されているという事実があります。 ここでは、Hello WorldのEJBの書き方を以前の古いバージョンから順次振り返りながら比較してみることで、EJBのプログラミングモデル

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く