タグ

Javaに関するalcusのブックマーク (1,566)

  • Log4j 2のバージョンアップのやりかた - 日々常々

    Log4j 2に脆弱性があるらしい、バージョンアップしたら治るらしい。」 日話題のこのテーマで軽く書いておきます。 未完です。 未完公開の言い訳。更新した内容は最後に書いてます。大きな間違いは(今のとこ)ないので、よかった。 2021-12-20追記: 2.17.0 出てますのでコピペしてそのままにせず適宜読み替えてくださいね。 とにかくバージョンを上げよう ……リリースできるかは別の話として。 バージョンを上げられないことには話になりません。ということでとにかくあげましょう。 Log4j 2のようなログライブラリは多くのプロダクトで使用されています。 意識する/しないに関わらず、ログライブラリは何かしら関連があると思うべきでしょう。 使用しているかの調べ方 常時依存ライブラリリストを出力するなどして管理しているのであればそれを見ればいいだけの話ですが、そうでなければ、 mvn dep

    alcus
    alcus 2021/12/14
  • 【オンライン】 JJUG CCC 2021 Fall 発表資料・動画まとめ

    alcus
    alcus 2021/11/24
  • JavaでTupleが欲しくなったときメモ - Qiita

    Javaでもラムダ式やStream APIなど比較的モダンな機能が取り入れられ、処理結果を2つ以上の値として返したい場合が増えてきています。 その方法として一つとして思いつくのが、他言語ではよく用意されているTupleです。 ところが、Javaには標準APIとしてTupleが用意されているないため、ちょっと調べたときのメモです。 Tupleとは タプル(tuple) タプルとは、順序付けられた複数の要素で構成される組。もとは数学の概念だが、いくつかのプログラミング言語にはタプルという名称のデータ型が用意されている。 タプル型の仕様は言語によって異なるが、複数の異なる型のデータやオブジェクトなどを格納でき、配列のように各要素に通し番号(添字)が割り振られ、これによって要素を識別するようなデータ構造を表すことが多い。また、LISPなどの関数型言語では二分木の構造になっているデータ型をタプルとい

    JavaでTupleが欲しくなったときメモ - Qiita
    alcus
    alcus 2021/11/04
  • Javaを救うOracleレジスタンスは

    悪の帝国 OracleJava を有償化し重税を課そうとしたその時、正義の勇者 Amazon が立ち上がり新しい Java 実装 Corretto を無償で広めて救ったのだ! ……という情弱が好きそうなデマがあるんだが、こんな陳腐なシナリオに喜んでいるようではインチキなテック系 YouTuber にい物にされてしまうぞ☆ Oracle レジスタンスはいた。彼らは Oracle の中に潜んでいたんだ。 赤字に苦しむ Sun時は2005年に遡る。 Java を開発した 米 Sun Microsystems は赤字にあえいでいた。 2004年に Java 5 (目玉機能はジェネリクス) がリリースされてしばらくの頃だ。 この頃、ひとつのオープンソースプロジェクトが立ち上がる。名を Apache Harmony という。 開発は2005年5月に開始され、2006年10月には Apache

    Javaを救うOracleレジスタンスは
    alcus
    alcus 2021/09/22
  • Javaの長期サポート(LTS)版、次回は2年後に登場の見通し。オラクルがLTSのサイクルを3年から2年に変更提案

    Javaの長期サポート(LTS)版、次回は2年後に登場の見通し。オラクルがLTSのサイクルを3年から2年に変更提案 現在、Javaは3年ごとに長期サポート(LTS:Long Term Support)版がリリースされています。最新のLTS版は今週リリースされたばかりのJava 17で、その1つ前のLTS版はちょうど3年前の2018年9月にリリースされたJava 11でした。 この3年ごとに設定されたLTS版のリリースを、2年ごとに短縮しようという提案が行われています。 オラクルでJavaの顔ともいえるJava Platform Groupのチーフアーキテクトを担当しているMark Reinhold氏は、自分のブログに記事「Moving Java Forward Even Faster」を投稿し、LTS版のリリースサイクルを3年から2年にしようと提案。これをJavaの開発者コミュニティのメー

    Javaの長期サポート(LTS)版、次回は2年後に登場の見通し。オラクルがLTSのサイクルを3年から2年に変更提案
    alcus
    alcus 2021/09/17
  • Java のバージョンを上げるだけで、プログラムは速くなるのか - Qiita

    (この記事は 地平線に行く とのマルチポストです) よく Java の実行バージョンを上げるだけで速くなるという話を聞きます。 でも、当にそうなのでしょうか。また、当だとしたらどれぐらい速くなるのでしょうか。 そこで、簡単なプログラムで実験してみました。 実験概要 実験用に、数独を解く Java のプログラムを作成しました。 このプログラムは単純な演算を繰り返し行ってるだけなので、Webアプリケーションのような複雑なプログラムとはおそらく傾向が違いますが、参考程度にはなるかなと思います。 これをJava 1.1 でコンパイルし、Java 1.1 ~ 12 の各 Oracle JDK (32bit/64bit) で数独100万問のデータセットを読み込んで解き終わるまでの時間を測定しました。1 細かい測定条件は以下の通り。 実行環境 Windwos 10 Home 1809 (64bit)

    Java のバージョンを上げるだけで、プログラムは速くなるのか - Qiita
  • Java17雑感 - 日々常々

    LTSとなるJava17が出ました。組織が今後もJavaを使っていけるかの試金石になるバージョンだと思います。 実際のとこLTSだから特別安定してるとかそんなことはないと思うし、6バージョン(3年)ごとにLTSにするってのもたぶんOracleさんが言ってみただけで、いろんなとこがそれに乗っかってるから、実質的に節目になってるに過ぎない。はず。 その程度のものなんだけど、私のようなのは乗っかりますし、たぶん多数派なんじゃないかなぁ……この派閥が運用で使うJavaのバージョンは8、11、17で、他のバージョンは評価に使うくらいでしょう。 11から17のジャンプになるんで、かなりたくさんの変更がありますが、業務アプリケーションの表層に関係するものはそこまで多くありません。パフォーマンスとかに影響のあるものは多々ありますが、基的には早くなるはずで、問題になることは稀です。稀なことはよくあるんです

    Java17雑感 - 日々常々
    alcus
    alcus 2021/09/17
  • オラクル、Oracle JDKを再び無料提供へ、本番環境でも利用可。昨日リリースのJava 17から

    オラクルは、同社が提供している企業向けのJavaディストリビューションであるOracle JDKのライセンスを変更し、無料で番環境などでの利用を可能にしました。 同社が9月14日付で公開したブログ「Introducing the Free Java License 」で、次のように説明しています(関連するプレスリリース「Oracle Releases Java 17」)。 Oracle JDKを無料で提供し、四半期ごとのセキュリティアップデートも提供する。 新ライセンス「Oracle No-Fee Terms and Conditions (NFTC)」は、商用利用や番環境での利用を含むすべてのユーザーに対して無料での利用を許可する。 Oracle JDK 17から、この無料のリリースとアップデートの提供を開始する。これは次の長期サポート(LTS:Long Term Support)が

    オラクル、Oracle JDKを再び無料提供へ、本番環境でも利用可。昨日リリースのJava 17から
    alcus
    alcus 2021/09/15
  • 3年ぶりの長期サポート版となる「Java 17」正式版がリリース。M1 Macのサポート、Sealed Classの追加など

    3年ぶりの長期サポート版となる「Java 17」正式版がリリース。M1 Macのサポート、Sealed Classの追加など Javaの新バージョン「Java 17」が正式にリリースされました。Java 17は、Java 11以来3年ぶりの長期サポート対象となるJavaのバージョンです。 Java 17 is now available! #Java17 #JDK17 #OpenJDK Download now: https://t.co/ui83Aehxoq Release notes: https://t.co/VKB0vfaPsP API Javadoc: https://t.co/VHs6UWdka8 Documentation: https://t.co/74Dk6r23Dt pic.twitter.com/NZvvxchXGT — Java (@java) September

    3年ぶりの長期サポート版となる「Java 17」正式版がリリース。M1 Macのサポート、Sealed Classの追加など
    alcus
    alcus 2021/09/15
  • コンテナ時代における最新のJava&JVM監視 - #chiroito ’s blog

    私は、OpenJDKのCommitter業や仕事でミドルウェアのSolution Architectとして活動している関係上、最近はコンテナ上でJavaアプリケーションを動かすことが非常に多いです。 KubernetesJavaアプリを監視する場合には、Elasticsearch+KibanaやPrometheus+GrafanaなどでログやMBeanを監視する方法が一般的に行われています。 Java 11では有償JDKに含まれていた機能がOpenJDKへ寄贈され、JDK Flight Recorder (JFR)として生まれ変わりました。JFRはJVMの内部の情報やその上で動くJavaアプリケーションの様々な情報をほとんど負荷無く記録し、ファイルとして取得できます。このファイルをJDK Mission Controlなどのツールを使って確認し、これまでより詳細に分析できます。 これまで

    コンテナ時代における最新のJava&JVM監視 - #chiroito ’s blog
  • SLF4JとLogbackは2021年現在では積極採用しない方が良い(2023年12月 追記) - Kengo's blog

    SLF4JとLogbackの中の人はここ数年活発ではないのでLog4j2などを代わりに使いましょう。 SLF4Jの活動は最近活発ではない SLF4JはVCSとしてGitHubを利用しています。最後の変更が2020年2月、最後のリリースが2019年12月となっていることからも、あまり活発ではないことが伺えます。 またBTSとしてJIRAを使っていますが、こちらもメンテナンスされていません。昨夏SLF4J-209が既にクローズ可能な状態であることやSLF4J-186が修正可能であることなどをコメントしましたが、1年近く経った今もすべて返信がない状態です。 2020年12月にイシューを閉じていたりするので全く動きがないわけではないのですが、年間で22つ作成されたのに対して2つしか閉じられていないので、充分にメンテされているとは言い難い状況です。 2021年5月31日時点での過去360日のイシュー

    SLF4JとLogbackは2021年現在では積極採用しない方が良い(2023年12月 追記) - Kengo's blog
    alcus
    alcus 2021/06/01
  • JJUG CCC 2021 Springでバイトコードの話をしました - Kengo's blog

    JJUG CCCで聞きたい内容を募集👇🏻— ゴールドシップと同誕の方のトダ (@Kengo_TODA) 2021年3月2日 ということでJava8〜16におけるバイトコード生成の変化について、先日開催されたJJUG CCCで喋ってきました。 動画をYoutubeにて配信していただいているので、よろしければご覧ください: youtu.be 資料はSpeakerdeckにあります。ハイパーリンクを埋めているところは、PDFを落としてもらえれば追えるはずです: speakerdeck.com マイクロベンチマークはGitHubに置いてあります。みんなも手元でレッツJMHだ: github.com なお最後の方に触れたJEP396については、掘り下げたセッションがあったようです: youtu.be 運営の皆様、いつも素敵なイベントを開催いただきありがとうございます! 昔は息子氏見てもらう

    JJUG CCC 2021 Springでバイトコードの話をしました - Kengo's blog
    alcus
    alcus 2021/05/27
  • JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)

    JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring) JJUG CCC 2021 Spring にて講演。 2021年3月リリースのJDK 16 では、17個の JEP(JDK Enhancement Proposal)が導入されました。 JDK 16で導入された JEP 396: Strongly Encapsulate JDK Internals by Default による影響は十分に評価・準備することをお勧めします。 今回は、JEP 396での変更点やその背景を解説すると共に、アプリケーションでの評価・確認する際のポイントをご紹介します。Read less

    JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
    alcus
    alcus 2021/05/27
  • GKE 上の Java アプリケーションからログを出力して Stackdriver Logging でいい感じに閲覧したい

    Google Kubernetes Engine (GKE) 上で稼動させている Java アプリケーションのログをいい感じに Stackdriver Logging で閲覧できるようにするメモです。 TL; DR REST API を直接叩くのはライブラリ由来のハングアップ問題に遭遇しかねないので避けた方がいいよ アプリケーションからのログは JSON フォーマットで出力するといいよ ログレベルを表すフィールドは "severity" の名前で出力しよう タイムスタンプは "timestampMillis" と "timestampNanos" をセットで出力しよう Spring Boot アプリケーションなら spring-cloud-gcp-starter-logging を使うのがいいよ はじめに GKE を利用してコンテナ化されたアプリケーションを稼動させていると、アプリケーショ

    GKE 上の Java アプリケーションからログを出力して Stackdriver Logging でいい感じに閲覧したい
    alcus
    alcus 2021/05/19
  • Javaは決してレガシーな言語じゃない。今も昔もJavaが世界の目指す方向を教えてくれる - Findy Engineer Lab

    世界中で広く使用されるオブジェクト指向プログラミング言語Java。日におけるこの言語の普及に、とても重要な役割を果たしたのが鈴木雄介さんです。鈴木さんは20年以上前からJavaに触れ、プログラミングだけではなく執筆・講演などの活動も精力的に行ってきました。 また、2007年に設立された日Javaユーザグループ(Japan Java User Group:JJUG)に当初から在籍し、2012年4月から2019年3月までは会長を、2019年4月からJJUG CCC運営委員長を務めています。 なぜ鈴木さんはJavaに大きな魅力を感じているのでしょうか。そして、さまざまな普及活動を続ける過程で見えてきたものとは。Javaとともに歩んだ20年をふり返っていただきました。 *…取材はリモートにて実施しました。 Javaをテキストエディタで書くのが当たり前だった時代 ──鈴木さんはいつごろJava

    Javaは決してレガシーな言語じゃない。今も昔もJavaが世界の目指す方向を教えてくれる - Findy Engineer Lab
  • 開発時に実際にProfileをどう指定するか - 日々常々

    導入 SpringBootでProfileを使用するようになると、何かのprofileを指定しないと起動しなくなるような構成になりがちだと思います。 たとえば application-local.yml 、 application-dev.yml 、 application-prod.yml など環境ごとのプロファイルを用意する場合です。 開発効率を考えればProfile無しでも動作するようにしておくのが良いこともあるのですが、それだと設定誤りなどで番環境で動作してしまうリスクが残ります。 たとえば無印(not default)ではH2で動作するようにしておいて、prod で実際のデータベースに接続するように上書きしていた場合。設定漏れや誤りで上書きできなくても、一見正常に動作し、実はH2だった……などが考えられます。 この問題を検知できる別の仕組みがあれば無印を使用するのも良いかもしれ

    開発時に実際にProfileをどう指定するか - 日々常々
    alcus
    alcus 2021/02/15
  • [Java16]instanceofの型指定に追加される制約 - Qiita

    新しい構文 Java16(2021/3/16 GA予定) から正式導入される「instanceofのパターンマッチング」(JEP 394),便利そうですよね! よく知らない方のために簡単に紹介しますと,

    [Java16]instanceofの型指定に追加される制約 - Qiita
    alcus
    alcus 2021/02/15
  • jgitverでMavenのバージョン番号をGitの情報から自動設定する - たけぞう瀕死ブログ

    sbtではsbt-dynverプラグインを使ってGitのタグ、コミット情報から自動でバージョン番号を付与できるのですが、同じようなことをMavenでやるにはどうするのがいいのかなぁと以前から疑問に思っていたので、どのような方法があるのか少し調べてみました。結論としては以下のjgitverを使うのがよさそうかなという感じです。 github.com Mavenのextensionとして導入すると、デフォルトでは以下のようなルールでバージョンが使用されます(pom.xmlに記述されているバージョン番号は無視されます)。 タグ(x.x.x) -> x.x.x masterブランチ -> x.x.y-SNAPSHOT その他のブランチ -> x.x.y-<ブランチ名>-SNAPSHOT CIでMavenリポジトリにデプロイするようにする場合でも、タグ以外からデプロイする場合は自動的にSNAPSHO

    jgitverでMavenのバージョン番号をGitの情報から自動設定する - たけぞう瀕死ブログ
    alcus
    alcus 2021/02/09
  • Java7からJava16までの変遷。 - Qiita

    まえがき ずっとJava11を使っていました。そのためすっかりラムダ式やStreamAPIでの書き方に慣れていたのですが、最近Java7を使って稼働しているプロジェクトに異動したので、何ができて何ができないのか、ちょっと調べてみました。 Javaの変遷 私見ですが主要だと思う仕様変更を並べてみました。アプリ実装に関係する部分のみピックアップしています。 このバージョンのこれは入れておいたほうが良いよ!との意見がありましたらコメントにぜひお願いします。 Java8 2014/03/18 正式リリース(GA) https://openjdk.java.net/projects/jdk8/ ラムダ式 https://openjdk.java.net/projects/lambda/ https://qiita.com/sano1202/items/64593e8e981e8d6439d3 pub

    Java7からJava16までの変遷。 - Qiita
  • 開発時にdockerを使ってmavenをいい感じに動かす - なるはやで いい感じの 動作確認

    dockerを使ってJavaの開発しているとき、時折docker buildの遅さが気になる。 遅さというのは、ほぼ mvn package 実行時の依存解決にかかる時間に対して言っています。 というのも、例えば以下のようなDockerfileがあったとき # Dockerfile FROM maven:3.6.2-jdk-13 as builder COPY . /usr/src/ WORKDIR /usr/src/ RUN mvn -B package FROM openjdk:13-alpine COPY --from=builder /usr/src/target/example-1.0.0.jar / ENV CLASSPATH /example-1.0.0.jar ENTRYPOINT [] CMD ["java", "-jar", "Example"] 依存量にもよりますが、

    開発時にdockerを使ってmavenをいい感じに動かす - なるはやで いい感じの 動作確認
    alcus
    alcus 2021/02/08