Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

java

Java SE 9 will be released at 2017/07/29

At now(2016/11/19), Java SE 9 will be released at 2017/07/29. 2016/11/19時点では、Java SE 9は2017/07/29にリリース予定です。

translation of InfoQ article about Project Valhalla in Japanese

Valhalla adds new bytecode instruction "typed".

InfoQのJava EEガーディアンズ関連の記事を翻訳しました

Java EEガーディアンズの結束理由や取り組みなどを知ることができます。 www.infoq.com www.infoq.com

InfoQ 日本語サイトにて翻訳活動を始めました

初めての翻訳が本日公開されました。 www.infoq.com Java関連の翻訳を中心に、英語力の向上と技術情報の収集を兼ねて、1か月に1つ2つ翻訳します!

A simple example of Gauge + Selenide tests #gauge #selenide

I tweeted as below, I received reply from Selenide creator. 次のようにツイートしたところ、Selenideの作者からリプライをもらいました。 @jyukutyo Wow! Can you share some "Hello world" example of Gauge+Selenide tests?— Andrei Solntsev (@asolnt…

indyとASMを使ってコードを難読化できるんだって

そういえばJavaOne 2015で「Protecting Java Bytecode from Hackers with the InvokeDynamic Instruction 」というセッションに出ておもしろかったことを思い出しました。 そこでデモ用のものが紹介されていたので、今更ながら試してみました。 github.com …

Spring MVCでConversion失敗をまとめて処理したいときは@ModelAttributeを使うしかないのかな?

Spring MVCでこういうコントローラメソッドがあるとする。 @RequestMapping(path = "hoge") public String index(@RequestParam @DateTimeFormat(pattern="yyyyMMdd") Date start, @RequestParam @DateTimeFormat(pattern="yyyyMMdd") Date end) { return "h…

Bean ValidationでSpring Expression Languageを使って相関バリデーションする

このエントリで実装を見ていたとき、思いついた。 jyukutyo.hatenablog.com Spring Expression Language(SpEL)でもバリデーションできそうだな〜と。Spring、Hibernate Validatorの利用が前提になってしまうけど。 @SpringELAssertアノテーションというの…

Bean Validation(Hibernate Validator)で相関バリデーションを使う

ここでは相関バリデーションを、「2つの値の関係性をバリデーションする」とする。 たとえば、日付で開始日と終了日があって開始日 < 終了日とならなくてはならない、など。 Bean Validation 1.1の仕様には、相関バリデーションはなさそう。ただ、Hibernate …

ScalaのSpring MVCコントローラに@AutowiredでInjectする

これの続き。 jyukutyo.hatenablog.com 素直に@Autowiredアノテーションつけるだけでできた。 package hoge import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.ApplicationContext import org.springframe…

Spring MVCのコントローラをScalaで書く

やろうとした理由は…単なる思いつき。 調べたらいろいろな方が試されてました。手順をまとめておく。 既存のアプリケーションがMavenなので、Mavenで管理する方針で。scala-maven-pluginなるものがあるので、これを使う。 <pluginManagement> <plugins> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven</artifactid></plugin></plugins></pluginmanagement>…

マイクロソフトのクラウドでのJava EE、そしてJavaエヴァンジェリストへのインタビュー...マイクロソフトのね。 #てらだよしおがんばれ

こちらのブログエントリの翻訳です。 Java EE in Microsoft's Cloud or Interview With Java Evangelist ...At Microsoft : Adam Bien's Weblog 著者のAdamさんおよびインタビューされている日本マイクロソフトの寺田佳央@yoshioteradaさんに翻訳許可をいた…

Groovyでのinvokedynamic

Twitterでのやり取りでGroovyのinvokedynamicの話題が出たので、まず簡単に試してみました。 まず以下のHelloWorld.groovyを作ります。 println 'Hello, world!' 普通にコンパイルする。 $ groovy -v Groovy Version: 2.4.0 JVM: 1.8.0_65 Vendor: Oracle Co…

SpringでBean ValidationのMethod Validationを使う

公式リファレンスにはこうあった。 Spring-driven Method Validation The method validation feature supported by Bean Validation 1.1, and as a custom extension also by Hibernate Validator 4.3, can be integrated into a Spring context through a M…

関ジャバを初めてマイクロソフト様にて開催しました

僕が運営メンバーをしている関西Javaエンジニアの会(関ジャバ)ですが、 1/22(金)にマイクロソフト 関西支社にてMicrosoft Azure + Javaにフォーカスしたイベントを開催しました。 直前に連絡をいただいたのですが、なんとピザとビール、ソフトドリンクま…

JDK 9ではJavadocに検索ボックスができる

JEP 225: Javadoc Search いるよね〜。みんなブラウザの拡張機能とか入れてたはず。 生成してみた。 $ java -version java version "9-ea" Java(TM) SE Runtime Environment (build 9-ea+99-2015-12-23-184955.javare.4146.nc) Java HotSpot(TM) 64-Bit Serv…

JDK 9ではちょっとしたコレクションはファクトリメソッドで作れる

JEP 269: Convenience Factory Methods for Collections コレクションへの便利なファクトリメソッドを追加します、と。 上記のページにはJavaでのコレクション生成についてのJDK 9以前の書き方がいろいろありました。 一番ベーシックなやつ。 Set<String> set = new </string>…

JDK9では文字列の連結にinvokedynamicが使われることになりそうだ

JEPにあり、JDK9のターゲットになっている。 JEP 280: Indify String Concatenation Change the static String-concatenation bytecode sequence generated by javac to use invokedynamic calls to JDK library functions. This will enable future optimiz…

Uber JARとは

とある資料を読ませていただいていて、「Uber JAR」なる単語が。 java -jar hoge.jarでアプリケーションを起動するタイプのものを指すのは理解できたのですが、 Uberって?っと思い検索してみました。 stackoverflow.com Über is the German word for above …

クラスファイルはすべからくjavapしよう

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } javac HelloWorld.javaしてクラスファイルを生成します。さっそくjavap HelloWorldしましょう。javapコマンドはOpenJDK系(OpenJDKやHotSpot、…

try-with-resources 文のclose順序

超いまさらですが、JDK7で導入されたtry-with-resources文のclose順序です。 public class TryWithResources { public static void main(String[] args) { try (Resource r1 = new Resource("Resouce 1"); Resource r2 = new Resource("Resouce 2");) { // …

JPAでエンティティ以外のクラスにクエリの結果をマッピングする in Hibernate

JPAでそもそもそういう使い方するなよってことかもしれませんが。 ネイティブクエリを発行してその結果をエンティティ以外のクラスのインスタンスにマッピングしたいことがあるとします。 JPAの実装にHibernateを使っているときは、以下のコードで実現できま…

TomcatとGlassFishで動作が違った

ServletContext#getRealPath(String)がTomcat 6,8ではnullではなかったけれど、GlassFish 4ではnullを返しました。 This method returns null if the servlet container cannot translate the virtual path to a real path for any reason (such as when the…

Java Magazine Vol.21を読んでJava 20周年記念のステッカー(非売品)をもらおう!

Java Magazine Vol.20 「パフォーマンス特集」/Java Day Tokyo 動画・資料公開ほか【Java Developer Newsletter Japan】 Java Magazine Vol.21を読んでいただいたご感想をお寄せ下さい。 お寄せいただいた方には、Java 20周年記念のステッカー(非売品)を3枚セ…

JDK1.6だと出るけど1.7だと出ないエラー

Jenkinsのサーバを移行したところ、古いプロジェクトのユニットテスト実行時に出るようになった。 java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.SunJCE_b at javax.crypto.Cipher.getInstance(DashoA13*..) SunJCE_bはjce.jar…

Jenkinsが死亡しました

死亡なんて出るんですね。ジョブ実行中にJENKINS_HOMEを削除したらこうなりました。死亡したらリンクをクリックして再度利用できるようにしないと、何も実行できないスレッドとなります。

Codehausはサービス終了しています

GroovyとかMaven関連でホスティングしていたCodehausですが、サービス終了していたんですね。 All Codehaus services have now been terminated. With increasing diversity in opensource hosting platforms like Github and Bitbucket - who are meeting t…

JavaのリリースにはCPUとPSUの2種類があります

Java™ SE Development Kit 8, Update 51 (JDK 8u51)がリリースされましたね。 僕もダウンロードしました。 さて、このJDK 8u51は「CPU」なリリースです。 実は、JavaのUpdateには2種類あります。1つは「CPU」、もう1つは「PSU」です。 CPUは「Critical Patch…

OracleでSJISのデータベースの文字列カラムにUnicodeの絵文字をJavaで格納するには

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET' -- JA16SJISTILDE SJISのデータベースの文字列カラムにUnicodeの絵文字を格納するには、NVARCHAR2型のカラムを使います。次にJavaではシステムプロパティに-Doracle.jdbc.d…

初OSS(MogileFS Javaクライアント)へのプルリクエストがマージされました

少し前の話になりますが、初めてのOSSへのプルリクエストがマージされました。 MogileFSのJavaクライアント「moji」です。 出したリクエストはこちらです。 fix ConcurrentModificationException in fm.last.moji.tracker.pool.MultiHostTrackerPool.getAddr…