他にも家電などの組み込み機器やモバイルデバイスで動作するアプリケーションを開発するために使用するAPI がまとめられたJava ME があります。Java ME とはJava Platform, Micro Edition の略です。 このJava SE、Java EE(Jakarta EE)、Java ME の3つを目的に応じて使っていくことになります。 JVMとは JVM とはJava VirtualMachine の略でJava で作成されたアプリケーションをWindows やMac OS などで動かすために必要となるアプリケーションです。Java 仮想マシンなどとも呼ばれます。 例えば C 言語などで作成したプログラムの場合、コンパイルして出力されたバイトコードはそれぞれの OS で実行できるように OS 毎に異なる実行ファイルが出力されます。作成された実

2021年9月に一般公開されたLTSリリース「Oracle JDK 17」は現在、寛容な「NFTC」ライセンス下で提供されているが、新しいLTSリリース「Oracle JDK 21」が2023年9月に登場したことにより、1年間の移行猶予期間に入った。米Oracleは4月16日(現地時間)、自社の公式ブログで注意を喚起する記事を公開した。 「NFTC」(Oracle No-Fee Terms and Conditions、Oracle無料利用規約)は、「JDK 17」以降で用いられているライセンス。ライセンスに従うことを条件に、商用および本番環境での使用も含め、すべてのユーザーが無償で製品を利用できることを保証している。 しかし、「JDK 17」にこのライセンスが適用されるのは2024年9月まで。それ以降は「Java 8」「Java 11」のアップデートに適用されているのと同じ「Java S

主にWebアプリケーションスキャナを開発している寺田です。本日はJavaのWebアプリケーションにおけるセッションのレースコンディションについて書きます。StrutsやSpringのセッションスコープのフォームを使用しているアプリケーションに影響しうる問題ですので、該当する方は参照ください。 要約Java Servletのセッションは、同じセッションIDのリクエストを複数同時に処理する際にレースコンディション問題を起こしうる仕組みになっている。 Struts1/2, Springのセッションスコープのフォームを使っていると、レースコンディションによりフレームワークやアプリケーションによるチェックをバイパスされるおそれがある。 Synchronizedブロックによるロック等の回避策がある。Java Servletのセッションが持つ特性Java Servletのセッションは、他の処理系

アプリの起動でJava が必要と言われた場合にインストールしなくてはいけないもの【最新ではなく LTS 版のJava 17】Windows でJava のプログラムを利用する場合、アプリ (拡張子が jar のファイル) だけ ダウンロードしても動かすことができません。ランタイムと呼ばれる、アプリケーションを動かすための実行環境をインストールする必要があります。 ただJava について詳しく知らないと、ランタイムってなんだろう??となるのが普通だと思います。そこで初めてJava をインストールするユーザーのために、具体的な手順をわかりやすく紹介していきます。Java にはバージョンがある2022年12月現在、Java の最新バージョンは 19 です。Java は基本的に下位互換があるものの、現状一般的に使われているのはバージョン 17 (Java 17)です。 なぜ、最新バー

米オラクルは、Javaの開発・実行環境「Java Platform, Standard Edition(Java SE)」の商用向け更新版を公式ダウンロードサイトで提供するのは2019年1月までだと発表した。これにより自治体関係者らの間に不安が広がっているという。Java実行環境(JRE)を使う自治体の電子入札システムなどが情報セキュリティを理由に使えなくなる恐れがあるためだ。 特に影響が大きいとみられるのが日本建設情報総合センター(JACIC)が提供する「電子入札コアシステム」だ。 自治体はJACICのコアシステムをカスタマイズして利用している。コアシステムはJREを使っており、同システムを利用する全ての自治体が影響を受ける。全ての都道府県や政令指定都市が利用者として名を連ねる。 総務省が地方公共団体向けに公表している「情報セキュリティポリシーに関するガイドライン」は「開発元のサポート

今年のJavaOneオープニングの基調講演において、Oracleは、GPLでJava SEをリリースし、Oracle JDKの全ての機能について、オープンソース化する計画を発表した。また、Java EEは、マイクロサービスとサーバレスの新世界に適合していないことを認め、この問題に取り組む計画について話した。現代のマイクロサービスアーキテクチャのケーススタディは、AlibabaとSpotifyによって提供された。基調講演のビデオは、YouTubeで視聴できるが、ここでは、重要な情報を要約して提供する。 セッションは、Intelのシステム技術/最適化部門部長、MichaelGreene氏の話から始まった。Greene氏は、どのように「未来のもっとも価値のある通貨がデータになる」かについて話し、IntelのXeonプロセッサは、そのデータを扱う準備ができていることを強調した。Greene氏の話

LiveCrypto Prices & Market Cap Charts View live market data across 17,000+cryptocurrencies and 1,000+ exchanges. Pied Piper presents real-time updates on prices, market caps, and 24-hour trading volumes. You'll also see ranked lists of thetop gainers and losers over the past day sorted by actual price movement. Each listed asset includesits current price, recent performance over 1-hour, 24-hou

本日、ついにJavaSE 9 がリリースされました! そこで、かねてから噂になっていた JEP 254: Compact Strings がどのように実装されているのか調べてみました。 Compact Strings の概要 これまで String クラスや StringBuilder クラスなどの内部では、文字列を UTF-16 でエンコードして char 配列で保持していました。 つまり、一文字あたり*1常に char ひとつ = 2バイト分のメモリを使っていました。 しかし、これだと 1 バイトで表せる LATIN1(ASCII コード + ラテン文字)の文字列の場合、その半分が 0x00 になるという無駄がありました。 そこで、内部表現を変更し、文字列が LATIN1 のみで構成されるときは 1 文字を 1 バイトで保持するようにリファクタリングされました。 ちなみに、LATIN

Opening UpJava EE |Oracle The AquariumBlogOracleがブログで、Java EE 8の開発をコミュニティの手に委ねたいと表明している。その文章がいかにも回りくどく面白かったので、とりあえず翻訳してみた。Java EE 8についてOracleは目覚ましい進展を続けてきた。規格はほぼ固まり、この夏にリファレンス実装を提供できる予定だ。Java EE 8の提供とJavaOne 2017カンファレンスが近づいてくるにつれ、OracleとしてはJava EEの開発をより変容する業界と技術要求に対してアジャイルかつレスポンシブに対応できる開発体制を再考する余地があるのではないかと考える。Java EEは競争的な市場において、互換性の高い実装、業界に広く採用されている技術、多大な既存のフレームワークとツール、エンタープライズとエンドユーザーに対する数
JJUGCCC 2017 Springで、「データ履歴管理のためのテンポラルデータモデルとReladomoの紹介」という話をしてきました。 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 from HiroshiIto 今回の登壇は、株式会社FOLIOのスポンサーセッションです!FOLIOについてはこちらの入社エントリー記事もご参考ください。Toggetterは下のリンクから。togetter.com 世の中のみなさんが「論理削除フラグ」を使いたくなるモチベーションとしては、実は「削除」ではなく別のビジネスロジックを実装したいだけであることがほとんどだと思います。 たとえば論理削除フラグという名の死亡フラグ - @ledsunblogというエントリを参考にさせていただくと、下記のような要件の例があります。 ・社員が退職(・転
Clojureに反対する大きな理由がJVMです。この役立たずは重いですからね。 これは、数週間前に ZATech のSlackで見た投稿です。休暇中にClojureの話題を何件か見たのですが、投稿者はJVMについても繰り返し言及していました。 私はこの投稿についてSlack上で少しつぶやいていました が、もっと広く理解され議論されるように、本稿を書くことを決めました。 背景 以前は、私もJVMは重いと思っていました。2000年代の初めにJVMとPHPと比べていた頃の話です。当時は、.NETやColdFusionなど、別の重い製品が他にもありました。また、PerlやPythonという軽めの製品もありましたが、私はWindowsを使っていたのでActivePerlやActivePythonはやはり少し重めでした。 私が初めてJVMに対する“恐れ”を克服したのは、小規模な製品アプリを、JRu

qiita.com これの話。ブコメに書こうとしたら4000字は入らなかった。MicrosoftJava VM かつてのWIndows には MS 製のJava VM が搭載されていました。 古代のJava は「Write once, run anywhere」を掲げていた通り、クライアントサイドでJava アプレットとして利用されるのが主流でした(サーバーサイドで動くようになって、真価を発揮した感じがあります)。 しかしJava VM の仕様は、パフォーマンスについての記述は曖昧になっており、OS ごとの実装の違いによって、実行速度に顕著な差がありました。Windows の Sun 純正のJava VM は性能が悪かったため、MS は独自のJava VM を開発し、Internet Explorer にバンドルしました。調子に乗った MS はWindowsGUI
こんにちは。アプリケーション基盤チームの横田です。Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C

GoogleはAndroid用開発言語として、Swiftの導入を検討しているという。また、Swiftを「ファーストクラス」と位置付け、訴訟中のOracleとの決別も考えているもよう。Javaの開発元であるOracle社との訴訟問題を理由としてJava以外の言語を検討していると噂されている。Swiftに興味を持っているのはGoogleだけではない。Facebookは内部でSwiftをテストしていることが確認され、Uberも移行する可能性を検討していると伝えられている。 これらはあくまでも噂の域を脱さない情報ではあるが、Androidの開発言語の開発元と揉めている以上、別の言語へ移行することを検討するのも無理はない。Swiftは言語としても評価が高く、Objective-Cを含む他の言語よりも開発しやすいとのこと。Swiftさえ分かっていればiOSとAndroid、どちらも開発できるよう

DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 staticMap<String, Class> types = new HashMap<>(); static void register(String

こんにちは、らくからちゃです。 前回に引き続きまして、はてなブックマークからブックマークのデータをJavaを使って抽出し、解析を行う方法のプログラムの作り方についてお話したいと思います。本稿は、以下の記事の続きとなりますので、ご承知おき下さい。 さて前回は、URLではなく、特定の『サイト』に付けられたブックマークを一斉に取得する方法についてご説明いたしました。この方法を行えば、過去記事につけられたブックマークの全てのデータを抽出することも出来るかと思います。 ただ、ある程度大量のデータを扱うのであれば、テキストファイルで処理するのはちょった大変ですよね?そこで、今回は、取得したデータを、簡易データベースである『sqlite』に格納し、効率的に分析する方法についてご紹介したいと思います。 ところで皆さん、データベースというと、どういったものを思い浮かべますか?ウェブ系の人であればMySQL、

AndroidJavaでは昔からAOSPのcoding styleguidelineに則ったスタイルがとられることが多いようです。そのなかで、private fieldに "m" (member) や "s" (static member) などのプレフィクスをつけよ、というものがあります。 AOSPJava Code Style for Contributors | Android Open Source Project これはいわゆるハンガリアン記法の変種で、こういうやつですね。 class Recipe { private String mTitle; private List<String> mSteps; // ... } これについての態度はプロジェクトごとに様々ですが、たとえばクックパッド社のJavaのスタイルガイドでは明確に否定しています。 styleguide/
最近はエンタープライズのシステムでも、WebAPIによるシステム間連携が増えてきました。そうしたときに、1リクエストで複数の連携先APIを実行し、結果をクライアントに返すということがままあります。 どう作りましょうか、という問題です。 前提として、サーバサイドでHTMLレンダリングせずに、WebAPIの中継することとします。中継する意義は、流量やキャッシュをサーバサイドでコントロールできるところにあります。 クライアントから直接連携先のAPIにアクセスする設計にすると、リロードボタン連打などのDDoS攻撃うけたときに、自分たちでは対処できず、連携先に迷惑をかけてしまいますよね。特に「課金の関係などで直接APIをアクセスしなきゃいけないんだ」、とかでなければ、中継するように設計しておいた方がベターです。 WebAPIの呼び出し 業務システムで使う場合は、ちゃんとリクエスト、レスポンスが

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く