InfoQ ホームページ プログラミング に関するすべてのコンテンツ
-
Java 注目の機能: テキストブロック
Java SE 13では、Javaで複数行の文字列リテラルを宣言して使用する際の苦痛を軽減することを目的として、プレビュー機能としてテキストブロックが導入されました。その後、2回目のプレビューで細かい変更が加えられ、Java SE 15ではJava言語の恒久的な機能となる予定です。この記事では、オラクルのJava言語アーキテクトであるBrian Goetz氏が、このトピックについて深く掘り下げます。
-
Java 注目の機能:Sealed クラス
2020年9月にリリースされるJava SE 15では、プレビュー機能として「Sealedクラス」(JEP 360)が導入される。Sealedクラスとは、他のクラスやインターフェイスがそれを拡張することができるクラスやインターフェイスを制限するものだ。Sealedクラスは、列挙型のように、ドメインモデルの中の選択肢を捕捉し、プログラマーやコンパイラが網羅性を推論できるようにする。
-
DDDアプローチを用いたビジネスルールの検証
ソフトウェアアプリケーション開発の目標が、その分野の専門家の振る舞いをエミュレートすることであるならば、ビジネスルールを捕捉し、実装することが課題となります。これは単にコーディング能力よりも、優れた知識管理に関わるものです。ドメイン駆動設計のテクニックに従うことで、ビジネスルールを効果的に検証、実行する構造の実現が可能になります。
-
TornadoVM: GPUとFPGAでJavaを高速化する
近年の異種ハードウェアの急増は、CPUをターゲットとするJavaのような言語にとって問題となっています。TornadoVMはGraal JITコンパイラを拡張することでGPUやFPGAのメリットを活用し、フレキシブルでハイレベルなモデルを提供すると同時に、ハイパフォーマンスとライブタスクマイグレーションなどの機能を実現しています。
-
APIゲートウェイの過去、現在、そして未来
エッジは単純なハードウェアロードバランサとして始まり、APIゲートウェイやコンテンツ配信ネットワーク、ロードバランサを構成する、ハードウェアとソフトウェアプロキシのフルスタックへと進化しました。今回の記事では、アプリケーションアーキテクチャとワークフローの進化をもとに、データセンタエッジの進化の軌跡を追ってみたいと思います。
-
ソフトウェアアーキテクチャと設計 - InfoQトレンドレポート、2020年4月
InfoQのエディタたちが、2020年のソフトウェアのアーキテクチャと設計の分野におけるトピックをどう見たのか、基本的なアーキテクチャパターン、フレームワークの利用、設計スキルを中心に、その概要をお伝えします。
-
Amazon Deep Javaライブラリを使ってマシンラーニングをJavaで実装する
この記事では、JSR-381 VisRec APIを使うことで、DJLのトレーニング済モデルによる画像分類あるいはオブジェクト検出を10行未満のコードで実装可能であることを示します。
-
古典的Javaガベージコレクションを理解する
Javaのガベージコレクションは、25年経った今も大きな関心を集めるトピックです。多くの開発者たちがこの話題について、最も広く使われている実装(Java 8のパラレル)に関してさえ、いまだ困惑しているのが現状です。
-
Java 14の新機能 - Record
Java SE 14(2020年3月)では、プレビュー機能としてRecord(jep359)が導入されます。。Recordの目的は、"プレーンデータ"の集合を、より少ないセレモニーでモデル化できるようにすることです。今回の記事では、Java言語アーキテクトのBrian Goetz氏が、この機能を詳しく説明してくれます。
-
Kotlinのコルーチンを実装面から検証する
JVMにおいて最近、リアクティブプログラミングの代替手段としてコルーチンが注目されています。リアクティブストリーム用にコードを再構成するためのコストがメリットを上回ることが多いことから、最初はAndroidにおいて、それに代わるソリューションとしてコルーチンが現れました。この記事では、そのKotlinでの実装がどのように動作するのか、詳しく検証します。
-
Deep Java Library(DJL)の紹介
Amazonは、ディープラーニングモデルをJavaで開発するためのオープンソースライブラリDJLを発表しました。この記事では同ツールキットの導入方法を紹介します。このライブラリは、PythonやRといった新たなテクノロジを導入することなく、Javaによるエンドツーエンドのディープラーニング開発を可能にすることで、ソフトウェア依存性の数を削減することを目的としています。