Fossbytesは12月6日(米国時間)、「StackOverflow's Most Copied Java Code Snippet Has A 'Bug'」において、Stack Overflowで最もコピー&ペーストされたJavaのコードスニペットにバグがあると伝えた。Stack Overflowに掲載されるコードスニペットは、開発者がそのままコピー&ペーストして活用していることがわかっている。 これまでStack Overflowで最もコピペされたコードスニペットは、Andreas Lundblad氏が投稿した「formatting - How to convert byte size into human readable format in java? - Stack Overflow」と言われている。 2010年に投稿されたこのコードスニペットはバイト数を人間が読みやすい形に
Javaフレームワーク「Quarkus」登場。Javaコードからネイティブバイナリを生成し瞬時にJavaアプリが起動、コンテナへの最適化を実現。Red Hatがリリース Red HatはQuarkusの目的を、Kubernetesやサーバレス環境においてJavaを先進的なプラットフォームにすることだと説明しています。下記はQuarkusを発表したブログの記事から引用。 The goal of Quarkus is to make Java a leading platform in Kubernetes and serverless environments while offering developers a unified reactive and imperative programming model to optimally address a wider range of d
Logger.getLogger("test").setLevel(Level.OFF); これは、testという名前のロガーのログ出力を抑止することを目的としたコードです。 ここで使っているLoggerはJava標準のjava.util.logging.Loggerで、getLogger()は引数で与えられた名前のロガーインスタンスが既に生成されていればそれを返し、無ければ新たに生成するメソッドです。setLevel()は、そのロガーのログレベルを設定します。引数はLevel.OFFなので、ログ出力を無効にします。 この記事は、上記コードが引き起こした問題についての実話です。 このコードが起こした問題 ある日、私のもとに至急の調査依頼が来ました。その内容は、「Tomcatの再起動をきっかけに、Webアプリケーションがボディの無い正常応答を返すようになった」というものでした。 その後の再起
マルチプラットフォーム(ubuntu、RHEL、Windows、MacOS)対応のLTSがついたOpenJDK互換のJavaリリースのアナウンスです! しばらく前に、Amazon LinuxでのJavaのLTSが発表され大きな話題となりました。 Amazon LinuxでのJavaのLTS (Long-Term Support)提供について 「ほぇー、AWSもやりおるやんけ!!」と感慨にふけっていたら、それの100倍ぐらい衝撃的なニュースが、Javaの神様James Goslingのツイートで飛び込んできました。 Just announced #amazon #Corretto at #devoxx. It is our distribution of OpenJDK. https://t.co/09cuPEqnex — James Gosling (@errcraft) 2018年11月
Java 9、Java 10と6カ月ごとのリリースを終え、予定通り9月にJava 11がリリースされます。Java 10の連載でも紹介しましたが、Java 11ではサポート面の変更や既存モジュールの一部廃止などが行われます。また、Java 11はLTS版(長期サポート)であり、本格的に利用を始めようと思う方も多いのではないでしょうか。実は筆者もJava 11の状況を見てから現行で動いているシステムの移行対応をしようと思っています。特にJava 8以前の資産を維持しなければいけない開発者にとっては、影響がどのくらい生じるのか興味があるでしょう。また、新しいAPI面では、Java 9から長く待たされているHTTP関連のAPIが大きな変更点です。今回はJava 11での主な変更点の紹介と標準機能になったHTTP Client APIを中心に紹介します。 初めての6カ月定期アップデートで変わったJ
Javaはなぜ変わらなくてはならなかったのか。JavaOne改め「Oracle CodeOne」の基調講演で語られた理由。Oracle CodeOne 2018 米オラクルがOracle OpenWorld 2018と同時開催していたイベント「Oracle CodeOne 2018」は、昨年までJavaOneとして開催されていたイベントです。今年から「CodeOne」と名称が変わりました。 このイベントがJavaデベロッパーにとって最大のイベントであることに変わりはありません。初日の基調講演は「 The Future of Java Is Today」としてJavaの最新動向と今後が紹介されました。その内容をダイジェストで紹介しましょう。 Javaが迎えた変化の理由とは Javaと言えばこの人。米オラクルJava Platform Groupチーフアーキテクト Mark Reinhold氏
Java10以降、Java SEのリリースサイクルを6カ月単位とすることが発表されてしばらく経ち、また、予告通りJava11からいよいよJavaのサポート体制も変更となった。 本稿ではJavaを使い続けるリスク、あるいはほかの言語ランタイムを使い続けるリスクについて検討してみたい。プログラム言語は用途に応じて様々なものが使い分けられている。特に本稿では選択肢が多く、またJavaのシェアも高いサーバーサイドのWebシステムという戦場で検討してみたい。 「Javaリスク」という単語、語呂が良い— なぎせ ゆうき (@nagise) 2018年10月11日 pic.twitter.com/tBGvupxtJ4— rf (@rf0444) 2018年10月11日 ランタイムの有償化リスク 無償で提供されていたプログラム言語のランタイムが、突如有償化するリスクをまず考えてみよう。この点で、Javaは
今後のJavaのサポートとアップデートに関して、世界のJavaチャンピオン数十名が執筆したJava is Still Freeというドキュメントを、日本のJavaコミュニティメンバーで翻訳しました。翻訳したドキュメントはこちらです。 docs.google.com 簡約バージョンと詳細バージョンがあります。目的に合わせて、バージョンを選んでいただければと思います。 たとえばこういった内容があります。 有償のOracle JDKとGPLv2 + Classpath ExceptionライセンスのOpenJDKの違い Java 8とJava 11(LTS)それぞれに対して提供される各JDKプロバイダのサービス 日本だけでなく、海外でも同様に、今回のJavaのリリースサイクルとOracle JDKの変更について、混乱があるようです。 背景 JavaチャンピオンメーリングリストにJava is S
Microsoft Azure上での実行目的ならJavaの長期サポート(LTS)を無料提供、MacやWindowsでの開発用途もOK。マイクロソフトとAzul Systemsが提携で Javaの独自ビルドを提供しているAzul Systemsとマイクロソフトは、Microsoft AzureもしくはAzure Stackで実行する目的であれば、Javaの長期サポート(LTS:Long Term Support)を無料で提供すると発表しました(マイクロソフトの発表、Azul Systemsの発表)。 これまでJavaのバージョンを固定し、そのバージョンに対応したセキュリティパッチやバグフィックスを継続的に適用し利用し続けることは無料でできました。オラクルがJavaのLTS対象のバージョンに対するセッキュリティパッチやバグフィクスの提供を無料で行っていたためです。 しかし9月25日付けでリリー
Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄 Java 11正式版がリリースされました。 Java 11は2017年9月から始まった6カ月ごとのJavaバージョンアップサイクルからちょうど1年となるバージョンであり、また2014年3月に登場したJava 8以来、4年半ぶりに長期サポート(LTS:Long Term Support)対象となるバージョンでもあります。 JDK 11 General Available Release is Out! #OpenJDK #JDK11 Download: https://t.co/GxeXcyGUiv Release Notes: https://t.co/h5tqx7d9U5 pic.twitter.com/XByIzINXCj — Java (@j
2018年現在でもJava開発をしていると、Antすら使っていないEclipseプロジェクトにそこそこの頻度で出くわします。Eclipseの自動コンパイルが通ればOKであり、ビルドはExcel手順書をもとに手動で行われ、依存関係ライブラリはもちろんlibフォルダに各種jarファイルが放り込んであります。Eclipse上以外ではどう動かせば分かる人がいないため、コマンドラインからビルドなどを行うことは叶わず、CI化なんて夢のまた夢です。 そんなJava開発から脱却したい人向けのJava開発のモダン化ガイドです。 基本的にJava 8以降での開発を想定しています。 OpenJDK/OracleJDK上での開発を想定しています。 Android開発の場合は一部適用できない可能性あり。 英語のIDE、ツール等は積極的に使用します。 英語嫌いだとモダン化は難しい。 Java開発全般を前提としているた
実はオブジェクト指向ってしっくりこないんです! 私はJavaでキャリアを始めたので、当然、オブジェクト指向を前提としてプログラミングを学んでいきました。オブジェクト指向の概念を聞いたとき、なるほどこれはよくできているなと思ったのを覚えています。オブジェクト指向では、現実世界の「もの」をそのままオブジェクトに表現します。なるほど、合理的でプログラミングが簡単になるように感じます。ちょうど現実のものを操作するようにプログラミングができるのですね。 実際にオブジェクト指向でプログラムを書こうとして分かったのは、私が作っているのはコンピューターのコードであって、現実のものではなかったということです。ArrayListって現実の何に対応するんでしょうか? 本棚? 「プログラミングはデータの入出力と、その変形のことだ」というデータ指向プログラミングの考えを知ったことが、決定的にオブジェクト指向への興味
GlassFish から Payara 移行のススメ 2016年5月30日 at 5:43 午後 1件のコメント 先日 decode:2016 が開催され、山本裕介さんと一緒にセッションを行いました。ご参加いただいた皆様、誠にありがとうございました。 今回の de:code 2016 では、私が今できること、私ならではの内容が何かないかを考え構成を検討しました。本ブログではその経緯をご紹介します。そして次のエントリでは技術的な内容に触れる予定です。 結論から申し上げると、今回ご紹介した内容は、 Payara という Java EE アプリケーション・サーバを利用した、マルチリージョン間のレプリケーション方法(冗長構成)についてです。かんたんにいうならば、Azure の東日本リージョンと西日本リージョンに、それぞれクラスタ環境を構築し、その東日本と西日本のリージョンをさらに冗長化させるという
前回は、主にJava 10の機能面の変更について説明しましたが、今回はJava 8までの流れと大きく変わった新しいサポートを中心に紹介します。新しいサポート方針に関しては、2017年9月に発表されていましたが、Java 10のリリースとともにJava 9のサポート終了を知り、大きく関心を寄せた方もいるのではないでしょうか。また、Java 10でのDockerへの対応強化についても併せて紹介します。単にDockerへの変更点という意味ではなく、Dockerを利用することは開発時もしくは運用時におけるJavaのバージョンへの依存度の低減につながる対応ではないかと思っています。 編集部より 本稿の一部に表現が不足している箇所がありました。お詫びして訂正いたします。(2018/07/13 13:30) Javaのメジャーアップデートサイクル、サポートサイクルについて、追記いたしました。 Oracl
Eclipse最新版「Eclipse Photon」リリース。Java 10に加え、RustとC#をサポート オープンソースで開発されている統合開発環境Eclipseの最新版「Eclipse Photon」がリリースされました。Eclipse Photonでは、Java 9とJava 10のサポートに加え、Eclipse IDEにおいてLanguage Server経由でRustとC#もサポートされました。 Eclipseは毎年6月に最新版がリリースされており、各リリースにはアルファベット順にコード名が付いています。一昨年は「Eclipse Neon」、昨年は「Eclipse Oxgen」、そして今年は「Eclipse Photon」となりました。 Java 9、Java 10をサポート Eclipse Phtonでは最新のJavaとして、Java 9とJava 10がサポートされました。
盲目的に --add-modules の JVM オプションで解消するのはやめて、Java 11 に備えてちゃんとした対処をしてみよう、というお話です。 Java 9 のモジュールシステムと deprecated なモジュールによる問題 Java 9 ではモジュールシステムの導入と同時に、Java の標準クラスライブラリを構成するモジュールのうち Java 11 で削除される予定のモジュール (JEP 320) が deprecated となりました。具体的には同 JEP に記載されているとおり、以下の 6 つのモジュールが削除予定となっています。 java.xml.ws: JAX-WS (Java API for XML-Based Web Services) java.xml.bind: JAXB (Java Architecture for XML Binding java.acti
Javaの新しい商用ライセンス、米オラクルが発表。月額料金でデスクトップは2.5ドル、サーバは25ドル。LTS版を利用可能 米オラクルはJava SEの新しい商用ライセンス体系「Oracle Java SE Subscriptions」を発表しました。 これまで年額で保守とサポートを提供していたものをシンプルな月額のサブスクリプション制にしたもの(標準の契約期間は1年)。デスクトップやサーバ、クラウドなどでのJavaの利用を対象としています。 価格は、デスクトップではユーザー当たり月額2.5ドル。サーバもしくはクラウドではプロセッサ当たり月額25ドル。それぞれボリュームディスカウントも用意されています。 サブスクリプションによって提供されるのは、商用バイナリのライセンス、アップデート、アップグレードそしてサポート。2018年9月にリリース予定のJava 11を皮切りに3年ごとにリリースされ
JDK11 ea18から、javacしないでもJavaファイルを実行できるようになりました。 あと、Windowsバイナリはzipファイルで提供されるようになっています。tarコマンドが提供されたとはいえ、エクスプローラーから解凍できるzipファイルになるのは ありがたい。 JDK 11 Early-Access Builds JEP330が取り込まれたことにより、ソースファイルがひとつのJavaプログラムは、javac不要でjavaコマンドで実行できるようになります。 JEP 330: Launch Single-File Source-Code Programs Windowsのコマンドプロンプトだと こんな感じ。 C:\Users\naoki\java>more Hello.java public class Main { public static void main(String
Java 9、10でStringの+=にバグがあるということがStack OverFlowで報告されていました。 Why does array[idx++]+="a" increase idx once in Java 8 but twice in Java 9 and 10? - Stack Overflow どういうバグかというと「s[i++] += i + ""」のようなコードが正しく動かないというものです。 次のコードを実行してみます。 public class PlusEqual { public static void main(String[] args) { System.out.print(System.getProperty("java.version")); String[] s = {"aa", "bb"}; int i = 0; s[i++] += i + "";
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く