The critical vulnerability in Apache’s Log4j Java-based logging utility (CVE-2021-44228) has been called the “most critical vulnerability of the last decade.” Also known as Log4Shell, the flaw has forced the developers of many software products to push out updates or mitigations to customers. And Log4j’s maintainers have published two new versions since the bug was discovered—the second completely
概要 Javaでは、マルチスレッド用のクラスとしてThreadが用意されている。[2017-04-15] しかし新しいJavaでは、Threadを直接使う事はあまり無い。 ExecutorService/Future(JDK 1.5)やFork/Join(JDK 1.7)といったクラスが追加されているので、そちらを使う。 Java21で仮想スレッド(virtual thread)が導入された。[2023-09-23] これにより、従来のスレッドはプラットフォームスレッド(platform thread)と呼ぶようになった。 Javaでは、マルチスレッド用のThreadクラスが用意されている。 Threadを継承して独自のクラスを作り、runメソッドをオーバーライドして処理本体を記述する。 class スレッドクラス名 extends Thread { @Override public vo
シルバーウィークのまとまった時間を利用して、同期化のパフォーマンスについて調査。どのように遅いのか・なぜ遅いのかを追いましたが、詳細な内部実装はJVM仮想マシン仕様書にも記載されておらず「なぜ」まではわかりませんでした。 中途半端な内容になりましたが、実施した計測や調べた内容をまとめておきます。 結論 synchronizedブロックは大型クラスのコンストラクタと同等の負荷(キャッシュしたりFlyweightパターンを適用したりしたくなる負荷)と受け取るべき。 volatile修飾子はsynchronizedブロックの約20%の負荷で、比較的軽量であることが確かめられた。 より細かな内部実装を把握するには、JVMのソースコードを読む必要がありそう。 パフォーマンス計測 同期化は遅いと言われるが、ではどの程度遅いのか?を計測。手元の環境*1でシングルスレッドにおけるパフォーマンスを計測した結
“コンストラクタ”と初期化、本当に理解できてる?:【改訂版】Eclipseではじめるプログラミング(13)(1/3 ページ) これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります コンストラクタでケアレスミスを少なくしよう Javaでは、正しい状態のオブジェクトを生成するために、「コンストラクタ(construtor、組立てる者)」というものが用意されています。クラスの各フィールドの初期化処理を実行するコンストラクタを用意することにより、「プログラマが、初期化がされていないオブジェクトをケアレスミスで用意してしまう」ことを防いでいるのです。 前回の「継承やオーバーライドで簡単にクラス
Kotlin が Android の公式言語になることが Goole I/O 2017 で発表されました。これから Kotlin を始める Java プログラマが多くなると思うので、本投稿では Java プログラマが Kotlin でつまづきがちなところについて説明します。 本投稿は単独で理解できるように書いていますが、↓の連載の第二弾です。 Kotlin の基礎的な構文は理解していることを前提としているので、 Kotlin の基礎については "Javaとほぼ同じところ" を御覧下さい。 Javaとほぼ同じところ 新しい考え方が必要でつまづきがちなところ ←この投稿で扱う内容 Kotlinならではの便利なこと 新しい考え方が必要でつまづきがちなところ 新しい概念を学ぶときには、何ができるのかだけでなく、どうしてそうなっているのかがわからないとそれをうまく使いこなすことができません。 本節で
Spring FrameworkとDIについて Oct 3, 2016 ( Feb 11, 2022 更新 ) DIのモチベーション ※ 参考: Spring徹底入門 CHAPTER2 一定規模以上のアプリケーションを開発するとき、各モジュールごとに実装を進めていくやり方が取られる。 例えば以下のようなインターフェースが必要になる場合。 UserService UserRepository PasswordEncoder UserServiceインターフェースを実装するUserServiceImplというクラスを実装する場合、 class UserServiceImpl implements UserService { public UserServiceImpl(DataSource dataSource) { this.userRepository = new UserReposito
はじめに IntelliJ IDEAを使い始めた初心者さん向けになるサイトとか記事は少ないなぁと思い書こうと思った次第。 少し本題とは外れて小話を。 IntelliJ IDEAを使い始めて「日本語化できないの?」という人をちらほら見かけますが、英語は怖いものではありません。 IntelliJ IDEAで使われている多くの英文は中学生でもWeb辞書片手に読める程度です。 例えばこのトップ画面 一番下のCheck out from Version Controlはバージョン管理システムを触ったことがなければ難しいかもしれませんがほかはある程度意味がわかるはずです。 大抵の初心者さんは最初の起動時に出てくるTip of the Dayを見て幻滅するという噂を聞きますが、これはその名の通り今日の豆知識です。豆知識なんているときに覚えればOK! (どうせJavaのStackTraceも英語だし多少の
Overview To reap the benefits of immutability in Java, we created an annotation processor to easily create simple and consistent value objects. You can think of it as Guava’s Immutable Collections but for regular objects. The core of Immutables is modelling. Good modelling is at the heart of creating good applications and services, and of good design in general. We feel proud to fill a gap in the
@Value was introduced as experimental feature in lombok v0.11.4. @Value no longer implies @With since lombok v0.11.8. @Value promoted to the main lombok package since lombok v0.12.0. Overview @Value is the immutable variant of @Data; all fields are made private and final by default, and setters are not generated. The class itself is also made final by default, because immutability is not something
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く