Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
![Java 7 ソケット・ダイレクト・プロトコル - 一度書けば、どこでも実行できる、ある場所では驚くほどに](https://cdn-ak-scissors.b.st-hatena.com/image/square/2cfe8bbe92b8ff59deb712a38624cc97770b7c49/height=288;version=1;width=512/https%3A%2F%2Fres.infoq.com%2Farticles%2FJava-7-Sockets-Direct-Protocol%2Fja%2Fsmallimage%2Flogo.jpg)
try-with-resources文とは何か? Java7から追加された新しい記述法です。データベースアクセスやファイルアクセスのプログラムを書くとき、なんだかtry-catchを大量を書いてうんざりしていませんでしたか?try-with-resources文は、これを解決する方法です! 以下は、今まで通りの書き方となっています。tryブロックの途中で例外が発生する場合に備えて、finallyブロックでオブジェクトのクローズ処理を入れています。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcOld { public s
パッケージJava製品開発担当の大です。こんにちは。 朝晩はだいぶ肌寒くなって、秋らしい空気になってきましたね。 前回も書いたとおり、現在HOSでは製品のJavaSE 7での動作検証を進めています。JavaSE 7で早く使いたい方、申し訳ありませんがいましばらくお待ちください。 さて、検証している上でちょっと困ったことが出てきました。従来動いていたテストコードの一部が、JavaSE 7ではコンパイルもできなくなってしまったのです。これはJavaSE 7の不具合か?と思い、調査してみました。 日本語のテストメソッド名 製品のクラス名やメソッド名では使いませんが、開発時のユニットテストのメソッド名やクラス名は、最近は、基本的に日本語で書くようになりました。これまで日本語メソッド名で特に問題が起こっていなかったことと、テストのレポートの出力がアルファベットのキャメルケースに比べ圧倒的に見やすいか
Java 7 になって String#split() の実装が変更されたことに今更ながら気付いたので、Pattern#split() や Java 6 との性能の比較をしてみたメモです。 Java 6 以前の文字列分割処理 古くから Java を触っているエンジニアであればみな当然知っていることだと思いますが、 TSV ファイルを Java のプログラムで読み込んで処理をするときなど、特定のデリミタで区切られた文字列を個々の要素に分割するときは String#split() を利用せず、事前にデリミタに対する java.util.regex.Pattern オブジェクトを生成しておき、そのオブジェクトを使い回す形で Pattern#split() を利用した方が処理効率 (処理時間) がよくなります。 これは、 String#split() の実装が実質的に Pattern.compile
世間は Java8 に向けて賑わっているというのに周回遅れ感が否めない Java7 ネタ。 Java7 で導入された try-with-resources で C# の using っぽい書き方できるなーと思ってやってみました。 まずは C# の using 。 IDisposable を実装しているクラスであれば、以下の様な感じで書けますね。 void SomeMethod() { using (var resource = new SomeResource()) { // using のブロックを抜けるタイミングで自動的に resource が開放される } } こんな感じのを Java でやるには、 AutoCloseable を実装したクラスであれば以下のように書けます。 void someMethod() { try (SomeResource resource = new So
未だ仕事の現場ではJava 6を使っていますが、JDK 7もリリースされてupdate 6まで来たことですし、そろそろ1度触っておこうかなと思いまして。 今回は、言語仕様系の変更を扱ってみます。ダイアモンド演算子だけは、さらっと触ったことがあります。NIO.2とかクラスローダ、Fork/Join Frameworkとかもテーマとしてはありますが、とりあえずパス…。 若干、今更感はありますけどね。 ダイアモンド演算子 パラメータ化されたクラスを使用する時に、変数宣言時とインスタンス作成時で同じ型パラメータを指定しなくてはならないのが冗長だ、ということで楽に書けるようにしたそうな。 要は、JDK 6以前で // JDK 6 以前 List<String> stringsOldStyle = new ArrayList<String>(); のように左辺と右辺で同じ型パラメータを書いていたものが
今月は本題に入る前に、2012年4月26日にリリースされたJava SE 7u4について触れておきます。 Java SE 7u4では、Mac OS Xのサポートや、今まで実験的な機能とされてきたG1GCが正式にサポートされています。また、JRockitの機能のいくつかがHotSpotに移植されています。 もちろん、多くのバグフィックスやパフォーマンス向上も行われています。 これらのことから、Java SE 7が業務で使用するに十分な品質に達したと判断されたようです。今までjava.comではJava SE 7が配布されていなかったのですが、Java SE 7u4からjava.comで配布されるようになっています。 Java SE 6のEOL (End of Life)が今年(2012年)の11月に迫っているので、そろそろJava SE 7へ移行を考えていかなくてはいけないようです。 では、
Java7のリリースから9ヶ月、ようやくOracleからJava7がリリースされました。 ・Java SE 7u4 Downloads ・Java6のEOLは2012年11月に予定されています。11月30日だとすれば残りしかないことになります。 、Java7もupdate4ということで致命的な問題は概ね静まってきたのではないかということでそろそろマジメに使っても良いのではないかと思います。 #何かプロジェクト的に致命的な問題があるのにOracleのリリースサイクルとかみ合わなければきっと素早い対応がされるであろうOpenJDKを使う手もある インストールしてちょっと迷ったのがどこにJava7があるのかということ。どこにあるのかは調べてないけれども Java Preferences.app(アプリケーション/ユーティリティの下にある)でグイグイグイっとOracle版のJava SE 7を一番
今月も先月に引き続き、今月もJava SE 7におけるコアライブラリの変更点について紹介していきます。 今回取りあげるのは次の4つのカテゴリです。 コレクション Concurrency Utilities Logging API Management これ以外にもjava.util.zipパッケージなどの変更がありますが、今回は省略させていただきました。 コレクション コレクションでは、使いやすさやパフォーマンス向上が図られています。また、Concurrency Utilitiiesに関連したコレクションクラスが追加されていますが、それはConcurrency Utilitiesの章で紹介します。 空のイテレータ Collectionsクラスに空のイテレータを返すメソッドが追加されました。 emptyIterator emptyListIterator emptyEnumeration 空
今さらです。細かい話です。 Java7 では NIO.2 として nio パッケージに大きな改善が行われましたが、その影で StandardCharsets なんていうクラスが追加されていたりします。 今まで Charset の指定は、以下のように文字列で指定していました。 Charset.forName("UTF-8") Java 7 から java.nio.charset.StandardCharsets というクラスが追加され、Charset は static final な定数として、 StandardCharsets.UTF_8 のように指定できます。 まぁ、Standard と名のつく通り、どのようなJava実装環境でも有効な Charset だけが定義されているので、以下だけです。 US-ASCII ISO-8859-1 UTF-8 UTF-16BE UTF-16LE UTF
本日のエントリーは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を比較してみました。小
先日のJava7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行くについて、お詫びと訂正です。 上記の記事の中で、「ArrayList の foreach文(拡張for文)がJava6 → Java7 で約2.5倍速くなっていました。」という実験結果を記載しました。 しかし、改めて -server オプションをつけて実験したところ、Java6 → Java7 で実行速度は変わらないことがわかりました。*1 foreach 文が速くなったのは ClientVM の場合だけ ClientVM と ServerVM、それぞれで実験を行った結果は以下の通りです*2。 (実験内容は、前回と同じく 要素10,000個 のリスト × 1,000回ループ です) List × foreach List × for Java6 (Client) 342.80
数値系は2つまとめて。 二進数表記 Binary Literals 16進数の 0x の様に、2進数を 0b で書けるようになります。地味に便利かもしれませんね。勿論二進数なので 0 と 1 以外の数を入れるとコンパイルエラーになります。 // いままで byte j6byte = (byte)21; // こう書ける byte j7byte = 0b10101; // これはコンパイルエラー byte error = 0b10201; これで馴染みの薄い & や | が脚光を浴びますね! System.out.println(0b01010 & 0b10101); // => 0 System.out.println(0b01010 | 0b10101); // => 31 ……無いですか。使ってる方は今でも特に問題なく使っているのでしょうかね。 数値リテラルにアンダースコアがつけられる
先日、ついに JavaSE 7 がリリースされました! そこで、早速ダウンロードして、Java7 のソースコード(src.zip)を Java6と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。 そこで、そのうち String クラスについて調べてみました。 splitメソッド - 独自処理による高速化 いままでは、String#split(〜) は正規表現 (Patternクラス) に処理を移譲するだけでした。 // (Java6) Stringクラス、2291行目〜 public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); } それが、単純な区切り文字なら正規表現を使わないで独自に処理をす
今回は、J2SE 1.4.0の話からはじめましょう。 J2SE 1.4.0がリリースされたのが2002年。すでに9年も経ってしまいました。 さすがに最近こそ使われなくなったものの、日本においてはJ2SE 1.4.xが一番多く使われていたバージョンなのではないでしょうか。 そのJ2SE 1.4.0の時に新機能として導入されたのが、JSR 51 New I/O APIs for the Java Platform、通称NIOです。 NIOは、java.ioを補う新しいI/Oに関するAPIで、入出力に特化したバッファや、ストリームよりも高効率なチャネルなどを提供しています。また、ノンブロッキングI/OもNIOで導入されました。 NIOは一般にはそれほど使われていないようですが、GlassFishやTomcatなど多くのフレームワークやライブラリで導入されています。 しかし、JSR 51は当初から
Javaエンジニア山本裕介のブログです。映画、アーチェリー、Java 好き 株式会社サムライズムという会社で海外の開発者向けソフトウェア製品を日本に展開する仕事をしています。 このブログでは日々の出来事、IT関連のニュース、映画の感想など種々雑多なエントリを書き連ねています Twitter でフォローツイートカテゴリーDropbox (1)Fitness (20)GPS (7)Groovy (2)IDE (1)Java (408)JavaEE (5)JVM (8)Mac (118)Python (6)Scala (5)Twitter (17)Uncategorized (3)Web (10)アーチェリー (60)イベント (30)ガジェット (1)ゲーム (19)サーバ (97)フレームワーク (2)ライブラリ (4)写真 (45)旅行・散歩 (75)映画 (116)未分類 (356)車
7月28日は Java7 のリリース日*1。 その前にちょっと遊んでみようと思ったら、eclipse がまだ対応していませんでした。 2011年9月ごろ(eclipse 3.7 SR1 で対応)になるそうです。それまでは、IntelliJ IDEAか、NetBeansを使うしかなさそうですね…。 2011年10月11日 追記: eclipse でも Java7 が使えるようになったそうです。 詳しくは、こちらの記事(eclipseがJava7に対応しました。 - 地平線に行く)をご覧ください。 Deferred Add support for Java SE 7 features. The next feature release of Java SE is version 7, which is currently scheduled for July 28, 2011. This re
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
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く