9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
本日はJava EE Advent CalendarとJPOUG Advent Calndarの14日目です*1。 さて、先日11/9のJJUG CCCで話してきた内容で、Javaアプリケーションサーバでは、アプリケーションからThreadLocalは極力利用しない方がよいとのスライドを載せていました。 しかし、当日は時間がなく、また参考情報程度でしたので、説明を省いていました。 これについて、このエントリでは少し丁寧に説明をしたいと思います。 Javaアプリケーションサーバ 構築・運用の勘所 from Takahiro YAMADA 実は、上記スライドは、当日話した内容から以下の修正を加えています。 「極力利用しない」→「注意して利用」に変更 「再利用前提のスレッドに紐づくため、アプリで明示的に破棄」を追記 これがサマリにはなるのですが、説明していきましょう。 ThreadLocal ま
It has sometimes been suggested that Spring and Spring Boot are “heavyweight,” perhaps just because they allow apps to punch above their weight, providing a lot of features for not very much user code. In this article we concentrate on memory usage and ask if we can quantify the effect of using Spring? Specifically we would like to know more about the real overhead of using Spring compared to othe
ちょっとトリッキーな方法ですが、ドメインクラスを使うとできます。まずは利用イメージを示します。 エンティティはこんな感じで、varcharをString、nvarcharをNStringにマッピングするものとします。NStringはもちろんこれから自作するクラスです。 @Entity public class Person { public String name; public NString name2; } NStringはStringと相互に変換可能で、こんな風に使えます。 Person person = new Person(); person.name2 = NString.of("あいう"); String name2AsString = person.name2.getValue(); 使うのはたぶん難しくない。 で、ここからが本題の実現方法の説明です。まずはnvarcha
Java 10が本日付で正式リリース。ローカル変数の型推論、ガベージコレクタが入れ替え可能、不揮発性メモリ対応など。Java 9は早くもサポート期間終了 昨年9月に登場したJava 9から、Javaは6カ月ごとのタイムベースによるアップデートサイクルが採用されました。そしてその最初のワンサイクルが経過し、今日3月20日付けでJava 9の次のメジャーバージョンアップとなるJava 10が登場する予定です。 おそらくJava 10の正式な発表は米国時間の3月20日、日本時間では休日となる明日の午前中あたりになると思われます。 Java 10の新機能:ローカル変数の型推論、ガベージコレクタが入れ替え可能など Java 9では、通称「Project Jigsaw」と呼ばれるJavaのモジュール化機能が入り、Javaに対する大きな変更が行われました。しかし今回のJava 10では、それほど大きな機
今年のJavaOneオープニングの基調講演において、Oracleは、GPLでJava SEをリリースし、Oracle JDKの全ての機能について、オープンソース化する計画を発表した。また、Java EEは、マイクロサービスとサーバレスの新世界に適合していないことを認め、この問題に取り組む計画について話した。現代のマイクロサービスアーキテクチャのケーススタディは、AlibabaとSpotifyによって提供された。基調講演のビデオは、YouTubeで視聴できるが、ここでは、重要な情報を要約して提供する。 セッションは、Intelのシステム技術/最適化部門部長、Michael Greene氏の話から始まった。Greene氏は、どのように「未来のもっとも価値のある通貨がデータになる」かについて話し、IntelのXeonプロセッサは、そのデータを扱う準備ができていることを強調した。Greene氏の話
お勧めの記事がありましたらコメントなどで教えて頂けると幸いです。 Guidelines プログラマが知るべき97のこと 技術的負債 不慣れなコードベースで短期間に生産性を高めるための7つの方法 何も知らない人を育てるために(新人教育情報キュレーション) 保守開発に開発者として入って困ることのまとめ(実体験) 技術系の名言まとめ++ 真似をする前にバッドプラクティスかどうかを調べてみよう 読まれない名著「人月の神話」を本気で読み込んでみた(まとめ) 技術的負債とどうやって戦うか Coding Style モデルやメソッドに名前を付けるときは英語の品詞に気をつけよう 関数名や変数名に使えそうな動詞・名詞・形容詞のメモ Naming -名前付け- DRY原則をもう一度 -コンカレント・エンジニアリング- レガシーコードのメンテナンス担当になったら新人はどうすればいい クソコードに対する怒りとコー
Kotlin が Android の公式言語になることが Goole I/O 2017 で発表されました。 Java プログラマが Kotlin を始めることがこれから多くなると思うので、 Kotlin をスムーズに始められるように次の 3 点についてまとめます。 Javaとほぼ同じところ 新しい考え方が必要でつまづきがちなところ Kotlinならではの便利なこと すべてを一つの投稿にすると長くなるので連載形式とし、本投稿では最初の「Javaと同じところ」について説明します。 Kotlinって何? 本題の前に、 Kotlin について簡単に説明します。 まずは↓の Android のコードを見て下さい。これは Android Studio が生成するテンプレートの Kotlin 版です。 Android アプリ開発者であれば、初見でも概ね何をしているのかわかると思います。 class Ma
Speee技術顧問の id:gfx です。 もうかなり時間が立ってしまいましたが、2月に行われたSpeeeKaigi #2 で基調講演をやらせてもらいました。 SpeeeKaigi #2の様子はこちらです。 tech.speee.jp 社内でこういうイベントがあるのはとてもいいですね。今回は自由テーマだったので、各人の興味分野が知れて大変楽しい一日でした。 私も普段の仕事とはあまり関係ない自由研究として、Retropilerというツールを開発して発表しました。当日のプレゼンテーションはQiitaにあります。 Retropiler: AndroidでJava8の機能を使うもう一つの方法 Retropiler: https://github.com/retropiler/retropiler この資料はwhatにフォーカスしているので、それを補間すべくwhyとhowをこのエントリで書きます。
はじめに 2017年3月、Struts2にまたしても新たな脆弱性(S2-045、S2-046)が見つかり、複数のウェブサイトにおいて情報漏洩等の被害が発生しました。筆者は2014年4月(およそ3年前)に「例えば、Strutsを避ける」という記事を書きましたが、今読み返してみると「やや調査不足の状態で書いてしまったな」と感じる点もあります。今回、良いタイミングなのでもう一度Struts2のセキュリティについてざっとまとめてみたいと思います。 なぜJavaなのにリモートからの任意のコード実行(いわゆるRCE)が可能なのか Struts2はJavaアプリケーションであり、Java製のアプリケーションサーバ上で動作します。Javaはいわゆるコンパイル型の言語であるため、通常はランタイムにおいて任意のコードを実行することはできず、RCEは難しいはずです。 JavaのウェブアプリケーションでRCEが成
DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String
■ 治外法権のeLTAX、マルウェア幇助を繰り返す無能業者は責任追及されて廃業に追い込まれよ ここ数年、不正送金の被害がインターネットバンキングの法人口座で急増しているという*1。その原因は今更言うまでもなく、Java実行環境(JRE)やAdobe製品の古いバージョンの脆弱性を突いてくるマルウェアである。しかしそれにしても、法人口座を扱うパソコンがなぜ、Java実行環境やAdobe製品をインストールしているのだろうか。インストールしなければ被害も起きないのに……。 その謎を解く鍵が、eLTAX(地方税ポータルシステム)にあるようだ。eLTAXでは、インターネットバンキングの口座を用いた納税ができることから、インターネットバンキング用のパソコンでeLTAXの利用環境も整えるということが普通になっていると思われる。そのeLTAXが、昨日までは、Java実行環境のインストールを強要していた。eL
OutOfMemoryError (以下 OOME)が起こったときにお手上げ状態にならないためにも、 Java のメモリ管理の仕組みとか、 OOME が起こったときの調査方法とかを調べる。 環境 OS Windows 7 > java -version java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode) Java 8 で、 Oracle の JVM を前提とした話です。 Java のメモリ管理 これを知っておかないと、 OOME が起こっても、メモリ内で何が起こっていて、どこを調査すべきで、どのように対処したらいいのかが判断できない。 なので、まずは、そもそも J
Android では Java8 が使えないため、 'Yet another Stream API' なライブラリがいくつかあります。 Androidでリスト操作するなら、Lightweight-Stream-APIが便利 - Qiita JavaにC#のLINQを移植してみた - jLinqer - Qiita What is the Java equivalent for LINQ? - Stack Overflow 普段 C# を使っているため LINQ to Objects の便利さをなんとか Androidアプリ開発でも享受したい。 そこで個人的に「これだ!」と思っているライブラリが IxJava です。 akarnokd/ixjava: Interactive Extensions for Java IxJava とは? 一言でいえば 「LINQ to Objects の Ja
Java Magazine の第 17 号でも紹介されている噂?の Flyway を使ってみる。 Flyway とは Flyway は、オープンソースのデータベースマイグレーションツール。 Flyway を使うことで、データベースの状態をバージョン管理できるようになる。 Flyway (マイグレーションツール)を使う理由 データベースを使った開発をしていると、以下のような問題が往々にして発生する。 よくある問題 あるデータベースの、現在の状態が分からない。 あるパッチ用 SQL が、データベースに既に適用されているか分からない。 本番環境で緊急対応が必要になり適用したパッチが、テスト環境にも反映されているか分からない。 新しいデータベース環境を作成するときに、どの SQL を、どの順番で実行すればいいか分からない。 そんなときに、 Flyway のようなデータベースをバージョン管理するツー
1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く