Java9から17で入った新機能で、実際コード書く上で使いそうなものをピックアップします。 Java8を使い続けていた人向けです。 レコード (Java16) 不変なデータを保持するクラスを簡単に定義できるようになりました。 classの代わりにrecordで定義します。 名前の後に、フィールドのリスト(コンポーネントと呼ばれます)を記載します。
かつてJavaは技術の中心だった 私はSIerでシステム開発のアーキテクトやPMを担当しています。SIではまだまだJavaが主流ですが、文法を理解してコーディングできるだけでは活躍できない時代がすでにきていることを実感します。 私の上司が「技術の渦」という独特の表現を使って説明してくれたのですが、2000年から2006年ぐらいまではJavaを書くということは、いろいろな最新技術の実装を学べる時代でした。アプリケーションサーバー、XML、SOAP、MQ、CORBA、マルチスレッドなど、現代の評価としては芳しくないものも多いですが、そういった技術的チャレンジが多かったため、Javaエンジニアはあえて外に出ることもなく、ITの主要技術を学ぶことができていました。 時代の変化とそれへの追随 ただ、Web2.0やiPhone/Android登場以降、技術の渦はフロントエンドを経てアプリへと移ってきま
jBatchを見ていて、ちょっと気になったのがトランザクション管理。 いつ開始されて、いつコミットされるのでしょう? 日本語情報だと、このあたりに記載がありました。 Chunk方式のStepを使ってみる Jbatch実践入門 #jdt2015 どうも、Chunk方式の場合にトランザクション管理が行われるようです。 まあ、JSRを見るのがよさそうですね。 The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 352 JSR-352の、「11 Job Runtime Lifecycle」を見ると、Batchlet/Chunkの場合それぞれのジョブのライフサイクルが書かれていますが、ここで見てもトランザクション管理が行われているのは、Chunk方式みたいですね。 「11.6
これは Java Advent Calendar 2015 の 15 日目の記事です。 昨日は @opengl_8080 さんの Byteman 使い方メモ+α でした。明日は @irof さんです。 前置き ついこないだチームでちょっとだけ話題に上って、みんなある程度指針は持っているものの、割と悩みつつ明確に答えを出せなかったので、もっと良い意見があればと思って晒してみます。まぁよくある話だし、Java 8 で Optional が使えるようになって null について語られるケースが増えたと思うので、再考するちょうどよい機会になればいいなーと思います。初心者向けです。 どう処す?処す? こんな状況の時にあなたならどうしますか? // Generics なのは例です。String でもなんでもいいです public T doSomething(T input) { // input が
テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手順が必要でした。 新しいバージョンではだいぶ簡単簡潔に書けるようになりましたが、今度はたくさんありすぎて、どれがなんなのかが良くわからなくなっています(大袈裟)。 そこで今回は、"read-lines"の変遷についてまとめてみました。 最近Javaを始めた方がバージョンが古い時に書かれたソースコードを読むときに役に立つ...かも知れません。 目次 基本 BufferedReader (Java1.1~) Scannerと拡張for文 (Java5~) java.nio.file.Filesとtry-with-resources(J
http://openjdk.java.net/jeps/223 をテキトーに訳した。 JEP 223: New Version-String Scheme Summary JDKのバージョン文字列規則をメジャー・マイナー・セキュリティアップデートリリースを区別しやすいように修正します。 Goals 人間が理解しやすく、また、プログラムがパースしやすいようにします。 現在の業界標準、具体的にはSemantic Versioningに合わせます。 既存のパッケージングシステムとプラットフォーム依存のメカニズムであるRPM, dpkg, IPS, Java Network Launching Protocol (JNLP)などが使用可能なものにします。 バージョン文字列の一つの要素に二種類の情報を混ぜ込む現行方式を削除します。すなわち、マイナーリリース番号とセキュリティレベルでは解読が難しく、
Javaの古きアレなプラクティスの1つに、ユーティリティクラス*1をabstractで作成すると言うのがある。 public abstract class SomeUtil { public static String appendA(String str) { return str + "a"; } } ユーティリティメソッドappendAは、特に役に立たないが、引数のStringにAを足して返す物体だ。このクラスにはstaticメソッドしか含まないため、インスタンス化する必要はない。こういうクラスをabstractにすることにより、誤ってインスタンス化されることは無いと言う素晴らしい方法である。 「ねーよ」と言う言葉は堪えて頂きたい。それでは話が終わってしまう。 さて、JavaSE8ではProject Lambdaのついでにインタフェースにdefaultメソッドが追加された。ついでにs
The document discusses various techniques in Perl for dealing with reference cycles and memory leaks caused by strong references, including using weak references, extracting needed data from objects before destroying them, and passing objects into subroutines to avoid capturing them. It also discusses analogous techniques used in Objective-C like weak references and guard objects to break cycles.
「Javaの高速化の方法」というページに、次のような高速化手法が書かれていました。 文字列がNULLかどうかの判断は IF文を使用せずに 例外処理NullPointerException で置き換える if文の場合です。 if(obj == null) { /* process */ } try/catchの場合です。 try { /* process */ } catch (NullPointerException e) {} たまにこういう謎の高速化手法を教えてもらうのですが、どうしてもすぐには信じられないので少し調べました。 ifとtry/catchのオーバーヘッドは? Stack Overflowに、ドンピシャな質問がありました。 Java if vs. try/catch overhead 読んでみると、「例外処理は例外的な処理に使うものだから、通常のフローでnullになるような
全国50万のJUnit4ユーザーさん。使っている言語とテスティングフレームワークののMLとGithubやBitBucketリポジトリを監視していると思うので今さらかもしれませんが、2014/7/30にJUnit4.12 Beta-1がリリースされました。 結構楽しい機能が追加されているので、見逃している方のために情報を共有させていただければと思います。 基本的にリリースから抜粋しながら紹介ですがご容赦ください。 Release Notes junit/ReleaseNotes4.12.md at master · junit-team/junit · GitHub 全体の感想 JUnit4がおれの足元にやっと追いついたと思った。(今までJUnitとSpockを魔改造しまくってた。) テストランナー系 クラス階層化 JUnit魔改造コミュニティに朗報です。私たちのテストランナーでよしなにやっ
英語の勉強中です。 The Java TutorialsのAggregate Operationsのところを読んでテキトーに訳した。並行プログラミングあんま詳しくないんで、やや雑な訳になったが・・・・・・致し方なし。 Lesson: 集約操作(Aggregate Operations) Note:このセクションのコンセプトをより良く理解するには、Lambda Expressions とMethod Referencesのセクションを確認してください。 コレクションは何のために使用するのでしょうか? 単にコレクションにオブジェクトを格納して削除することでは無いでしょう。大抵の場合、コレクションに格納された要素を検索することと思います。 Lambda Expressions のセクションで解説されたシナリオを思い返してみてください。いま、ソーシャルネットワーキングアプリケーションを作ろうとして
The Java TutorialsのType Annotations and Pluggable Type Systemsのセクションを読んで訳した。 Type Annotations and Pluggable Type Systems Java SE 8 release以前では、アノテーションは宣言にのみ付与可能でした。Java SE 8 release以降では、アノテーションは型が使用される場所ならどこでも(any type use)付与可能です。この意味するところは、アノテーションは型を使う場所でならどこででも使用可能、ということです。型が使用される場所の例としては、new式でのインスタンス生成・キャスト・implements節・throws節、などです。アノテーションのこの形式はtype annotationと呼ばれ、いくつかの例をAnnotations Basicsに載せてい
10. jmc Java Mission Control ● メモリ統計、スレッド数、クラス数をグラフィカルに表 示 ● jconsoleと似たような感じだけどjmcの方がなうい? ● ダッシュボードのカスタマイズ(グラフの追加)が可能 ● Flight Recorderというプロファイリングツールがあ る。が商用ライセンスが必要(らしい ● -XX:+UnlockCommercialFeatures -XX:+FlightRecorder ● Eclipseプラグインとしても利用できる(らしい
参照: http://stackoverflow.com/questions/2348399/why-does-java-net-urls-hashcode-resolve-the-host-to-an-ip 公式ドキュメントによると: public boolean equals(Object obj) … 2 つの URL オブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。 2 つのホストが等価と見なされるのは、両方のホスト名が同じ IP アドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字小文字に関係なくホスト名が等しいか、両方のホスト名が null に等しい場合です。 ホスト比較には名前解決が必要なので、この操作はブロック操作です。 java.net.URL#equals
気付いたらSeasarのお話 なんだか最近になって、そう、ここ半年くらいですかね、「Seasarはどうなの?」って話を、よくもちかけられるようになりました。 それまでは、Seasar自体は基礎の基礎の土台みたいなもので、わざわざ Seasar 自体の話をすることは逆になかったんですが、ここに来て Seasar の話ってなんだか新鮮です^^。 もう、およそ 9 年くらい前から Seasar を使ってます。よく使っていましたし、今でも使います。Seasarカンファでもたくさん登壇させて頂きましたし、長く付き合ってますので、Seasarに個人的な思いもあります。それはまた今度、別エントリで書きましょう。 それだけに、やはり Seasar のことを聞かれることが多い立場ではあります。(ぼくは Seasar 本体のコミッタではありませんが...) まあ、Spring Framework や Java
こんにちは、九岡です。 Javaエンジニアのみなさん、結合テストの自動化してますか?! この記事では、 結合テストとは何か 筆者は何のために行っているのか それをMavenで自動化する方法 をご紹介します。 用途が知られていたりいなかったり、単体テストに比べると情報が少なかったり、より多くのMavenプラグインを使うことになりがちで手間がかかる「結合テストの自動化」。 「まだやってない」という方は、この記事をとっかかりにしていただけるとうれしいです! 対象 この記事は特に以下のような方におすすめです。 JavaやMavenを利用してアプリケーション開発を行っている方 テスト自動化をはじめて行う方 単体テストは自動化しているが、結合テストはまだ自動化していないという方 自分でMavenのビルド設定ができるようになりたい方 既にJavaプロジェクトで結合テストを自動化している方にとっては目新し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く