Fight the Future

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

java

新着順 人気順

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

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

JavaエンジニアとしてJCPについて知ろう! #jcp #jug

このブログを読んでいただいているということは、Javaを少なくとも使っているという状況と想像します。それでは、JCPのことはご存知でしょうか? JCPとは JCPとはJava Community Processのことです。公式サイトはこちらです。 The Java Community Process(SM…

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…

Java EEからJakarta EEへ

Eclipseファウンデーションへ移管されたJava EEの新名称が決まりました。 And the Name Is… | Life at Eclipse "Jakarta EE"です。 "Jakarta EE" or "Enterprise Profile"の決選投票が2/23までありました。7000弱の投票のうち65%が"Jakarta EE"へ票を入れて…

Graalのグラフ

こちらの内容に沿って、Graalの理解を深めています。 Understanding How Graal Works - a Java JIT Compiler Written in Java 前回はGraalにJITコンパイルをさせました。 jyukutyo.hatenablog.com 今回はGraalのグラフについてです。いわゆるプログラム依存…

JVM(HotSpot VM)におけるIntrinsics(C2/Graal)

Project Loomのソースを読んでいると、また遭遇しました。 public class Continuation { ... @HotSpotIntrinsicCandidate private static int doYield(int scopes) { throw new Error("Intrinsic not installed"); }; ... } @HotSpotIntrinsicCandidateアノ…

Graalが使うJVMCIとは

前回ではGraalをJITコンパイラとして使うため、EnableJVMCIでJVMCIを有効にしました。 jyukutyo.hatenablog.com 引き続き Understanding How Graal Works - a Java JIT Compiler Written in Java を参考に、Graalの理解を深めます。 ところでJVMCIとは何なの…

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");) { // …

JMHの`-prof perfasm`がめちゃすごい

JMH(Java Microbenchmark Harness)で、-prof perfasmをすると、perfと-XX:+PrintAssemblyを使って、JITコンパイラ生成コードでのホットな部分を表示してくれるという機能があります。これが、思いの外すごい機能だったので、紹介します。 前提条件 JMHを知…

JavaOne 2017 2日目 #JavaOne #j1jp

Java Keynote 昨年のキーノートでは"火星の悪夢"があったことをご存知の方も多いでしょう。Javaと関係のない火星の話が1時間もあるという悪夢のキーノートでした。 今年は、そつなくまとまっていて合格点はある気がします。3年連続3度目のJavaOneでしたが、…

Java 8ではTLS 1.2がデフォルトですよ~

詳細はこちらで紹介されています。 Oracle Blogs 日本語のまとめ: [Java, Security] Java 8 will use TLS 1.2 as default ですが、どうしてもサーバがTLS 1.2に対応していない場合もありますよね。 そのときはシステムプロパティにて使用するTLSのバージョン…

JOnsen 2017 1日目 #JOnsen2017

JOnsenというアンカンファレンスに参加しています。 温泉地でJava Expertで集まってリラックスして話そうぜ、という感じです。 詳しくは、disorganizer(アンカンファレンスなのでorganizeの逆)の1人Sebastianのブログに書かれています。 JOnsen 2017 Uncon…

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

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

Uber JARとは

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

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

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

Java 11 / JEP 309のConstant Dynamic(condy)を試す

JEP 309: Dynamic Class-File Constantsというものがあります。これはConstant Dynamic(condy)と呼ばれるものです。 http://openjdk.java.net/jeps/309 Constant Dynamic、つまり動的な定数です。Javaでは今まで(10まで)プリミティブとリテラルを持つStr…

Java 11 / JEP 181のNestmatesでのバイトコードの変更を見比べる

JEP 181: Nest-Based Access Controlというものがあります。これはNestmates(ネストメイト)と呼ばれるものです。 http://openjdk.java.net/jeps/181 Nestmatesは、クラスやインタフェースをネストして作成したとき、ネストする側される側の両方を指す言葉…

Java Champion / Java Rock Starとは!

関ジャバでも話題に上がったのですが、Javaには「Java Champion」と「Java Rock Star」という称号があります。 Java Championとは The Java Champions are an exclusive group of passionate Java technology and community leaders who are community-nomin…

JITWatchでJITコンパイルを見よう!

この記事は JVM Advent Calendar 4日目 の記事です。 JVM Advent Calendar 2014 - Qiita JITWatchについて JVMなみなさんは、JITコンパイルをご存知だと思います。 JITWatchは、アプリケーションにおけるJITコンパイルについて、可視化し分析するためのツー…

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…

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 Magazine Vol.21を読んでJava 20周年記念のステッカー(非売品)をもらおう!

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

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

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

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…

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

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

JJUG CCC 2017 Spring 参加&スポンサーセッション登壇 #jjug_ccc

スポンサーセッション 今まで3回CCCではセッションをCfPを出して担当しました。私が所属するフリュー株式会社は、前回2016 Fallからスポンサーになっています。今回は僕がスポンサーセッションを担当しました。 ですが、スポンサーだからといって何を宣伝す…

KANJAVA PARTY 2017を開催しました&発表資料まとめ #kanjava #KanJavaParty

kanjava.connpass.com 私が代表を務めている関西Javaエンジニアの会(関ジャバ)の、過去最大規模のイベント"KANJAVA PARTY 2017"を開催し、無事終了することができました! 参加者のみなさん、スピーカーのみなさん、そして運営メンバー陣、ありがとうござ…

JavaOne 2017 0日目〜1日目 #JavaOne #j1jp

10/1-5までサンフランシスコで開催される、JavaOne 2017に参加しています。 1日目はコミュニティセッション、Java User Group (JUG)やJCPのセッションです。本格的な技術セッションは2日目から5日目の昼過ぎまで、というのが例年の流れです。1日目は英語セッ…

アノテーションをimplementsしたクラスを作成する

アノテーションをimplementsしたクラスを作成できるというのを最近知りました。アノテーションなんてJDK 1.5からあるのに、知らないもんですね… みなさんはご存知ですか?とTwitterにツイートしたところ、ご存知の方もたくさんいらっしゃいましたが、ご存知…

メソッド参照をRunnable型の変数に代入する

こんなことができるのを知りませんでした。 public class MethodReferenceSample { private void method1() { } public static void main(String[] args) { Runnable method1 = new MethodReferenceSample()::method1; } } メソッド参照の値をRunnable型の変…