タグ

関連タグで絞り込む (261)

タグの絞り込みを解除

Javaに関するyogasaのブックマーク (702)

  • 開発者が知っておくべきJavaと仮想マシンの歴史

    Javaの黎明(れいめい)期、多くの人々にJavaが知られ、広まった理由の1つは、WebブラウザにJava VMが組み込まれたことにあるでしょう。その当時のWebブラウザ開発のエキサイティングな様子は、雑誌『Wired』の古い記事「The Java Saga」で読むことができます。 Webブラウザ上で動作するJavaアプレットの勢いも借りて、各OSベンダが米サン・マイクロシステムズからライセンス提供を受け、各OSプラットフォーム用のJava環境が続々とリリースされます。 その一方、米マイクロソフトのWebブラウザ「Internet Explorer」(以下、IE)にJava VMが組み込まれたことは、歓迎とともに混乱を招きました。米マイクロソフトが提供したWindows 95/NT用のJava VM((MSJVM))が持つ「J/Direct」機能は高性能ながら、Win32 APIを直接呼び

    開発者が知っておくべきJavaと仮想マシンの歴史
  • Javaと偽Javaの話。 - なるようになるかも

    qiita.com これの話。ブコメに書こうとしたら4000字は入らなかった。 Microsoft Java VM かつての WIndows には MS 製の Java VM が搭載されていました。 古代の Java は「Write once, run anywhere」を掲げていた通り、クライアントサイドで Java アプレットとして利用されるのが主流でした(サーバーサイドで動くようになって、真価を発揮した感じがあります)。 しかし Java VM の仕様は、パフォーマンスについての記述は曖昧になっており、OS ごとの実装の違いによって、実行速度に顕著な差がありました。 Windows の Sun 純正の Java VM は性能が悪かったため、MS は独自の Java VM を開発し、Internet Explorer にバンドルしました。調子に乗った MS は Windows GUI

    Javaと偽Javaの話。 - なるようになるかも
  • Java API 訴訟の件で私が Google よりも Oracle の肩を持つ理由 - Qiita

    はじめに Java API を巡って OracleGoogle の訴訟が続いています。世間の論調を見ていると、「OracleGoogle」の構図を「プロプライエタリ対オープンソース」と位置付け、あたかも Google が正義の味方であるかのように扱っていますが、この件に関しては、私は逆の立場です。むしろ、「Google けしからん」と思っています。私がそう思う理由をここに書きます。 Java の互換性 Android が登場するずっと前から、業界の皆は、JCP (Java Community Process) に則り、協議の上 Java API の仕様を決めてきました。仕様を策定する際には、RI (Reference Implementation) (リファレンス実装) と TCK (Technology Compatibility Kit) (テスト群) も同時に用意します。

    Java API 訴訟の件で私が Google よりも Oracle の肩を持つ理由 - Qiita
  • グーグル、Java API使用が「フェアユース」と認められる--対オラクル訴訟

    Googleは、Java APIを使用してモバイルOS「Android」を構築していることをめぐるOracleとの法的な争いにおいて、優勢に立った。 Oracleは、著作権ライセンス料を支払わずに37件のAPIパッケージを使用しているとしてインターネット大手Googleを提訴し、数十億ドルのライセンス料支払いを求めていた。しかしGoogleは、自社による同APIの使用が「フェアユース」に相当すると米連邦裁判所の陪審員団に認めさせることに成功した。 この評決はGoogleにとって大きな勝利である。陪審員団がOracleの主張を支持していたとすれば、この訴訟における次の段階では、Googleが支払うべき対価の査定が始まるところだった。Oracleは、90億ドル以上の賠償金を求めていた。その額は、米国における著作権関連の評決でこれまでに認められた賠償額をはるかに超えている。 しかし、何年にもわた

    グーグル、Java API使用が「フェアユース」と認められる--対オラクル訴訟
    yogasa
    yogasa 2016/05/27
  • 入門書が教えてくれないJava スコープ編 - プログラマーの脳みそ

    入門書ではあまりとりあげられない部分を解説するコンセプトの「入門書が教えてくれないJava」シリーズの第二弾。前回は変数についてだった。今回はそのスコープについて取り上げたい。 スコープとは スコープとは大雑把に言えば変数やメソッドなどが見える範囲のことを指す。 Javaの変数のスコープで一番簡単なのはローカル変数で、これは{から}まで(これをブロックという)の中で、宣言した位置より後ろで参照することができる。 public void main(String[] args) { int i1 = 0; // i1はここからmainの}までの間で参照できる if (true) { int i2 = 0; // i2はこのifの}までの間で参照できる } // i2はifの}を過ぎると参照できなくなる i2 = 1; // ← コンパイルエラー } なお、Javaの言語仕様では{}のブロックは

    入門書が教えてくれないJava スコープ編 - プログラマーの脳みそ
    yogasa
    yogasa 2016/04/26
  • Java サーバ利用状況アンケート結果の公開

    2016年4月25日 at 12:35 午後 皆様、先日は Java のサーバの利用状況に関するアンケートにお答えいただきまして誠にありがとうございました。私個人からのアンケートについて「1 週間で 669 名」という、非常に多くの皆様からご回答いただきまして心より感謝しております。 日は、その結果をここに公開したいと思います。結果について私は一切手を加えておりませんので、その点は信用ください。 ※ 投票時に途中結果をご覧いただけないよう設定したのは、数が少ない場合に不意な団体票が入るのを避けるためでした、その点をどうぞご理解ください。 アンケートはとても興味深い結果を得ることができました。 この結果に対し、皆様それぞれがそれぞれの目線でいろいろな見方をすることができるかと思います。 まず、Tomcat は今なお圧倒的に利用者が多いようです。この結果を見る限りビジネス視点で Tom

    Java サーバ利用状況アンケート結果の公開
    yogasa
    yogasa 2016/04/25
  • 入門書が教えてくれないJava 変数編 - プログラマーの脳みそ

    春なのでJava入門的なことを書こうと思い立ったので、入門書ではあまりとりあげられない部分を解説するコンセプトの入門記事を書いてみようと思う。(←ひねくれ者) 対象読者としては、Java言語の基礎を学んだがもう一歩踏み込んだ話が知りたいぐらいの初学者〜中級者を想定してる。上級者の方は記述に誤りがないかチェックしていただければ幸いだが、説明を簡単にするためにいろいろ端折っている点はご理解いただきたい。 今回は変数・フィールド編とした。筆者のやる気次第だがこのシリーズでいくつか書こうと考えている。 入門書が教えてくれないJava 変数編 (稿) 入門書が教えてくれないJava スコープ編 - プログラマーの脳みそ 初期値を指定しない変数宣言 変数宣言に際して初期値を設定しないことができる。 int i; この場合、このint i;がフィールドであるか、ローカル変数であるかで扱いが変わってくる

    入門書が教えてくれないJava 変数編 - プログラマーの脳みそ
    yogasa
    yogasa 2016/04/24
  • Dockerコンテナ上でのJavaの実行はライセンス違反なのか?

    先日のブログ記事でHenn Idan氏が,Oracle Javaをコンテナで使用することはOracleのライセンス契約に違反しているのではないか,という問題を提起した。この記事は,発端となったAlpine Linux用のJavaの再コンパイルバージョンを推奨するツイートに対して,Oracleライセンスに対する明確な違反ではないか,とBen Evans氏が指摘したことを受けて提起されたものだ。 OpenJDKはGPLライセンス下で公開されているが,java.comでダウンロード提供される OracleJDKのコンパイル済バイナリには,これとは違うバイナリライセンスが適用されている。コードの著作権はOracleが所持しているため,Oracleには,GPL管理外のバージョンをリリースする権限があるのだ。また,Oracleの提供するJREにも,AppletプラグインやGUIをプラットフォームに依存

    Dockerコンテナ上でのJavaの実行はライセンス違反なのか?
    yogasa
    yogasa 2016/04/16
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
    yogasa
    yogasa 2016/04/13
  • Javaをチラ見する - きしだのHatena

    Javaを知らないからちょっとだけ見てみたい、みたいな人のために、ちょっとしたチュートリアルを書いてみました。 準備 まずはJDKをダウンロード・インストールしてください。 http://www.oracle.com/technetwork/java/javase/downloads/index.html ダウンロードページでは「Accept License Agreement」にチェックして、自分の環境にあわせたインストーラをダウンロードします。 今だとu73とu74がありますが、初めてインストールするなら74でいいと思います。 インストールするものを選ぶダイアログで「開発ツール」「ソースコード」「パブリックJRE」が出ますが、パブリックJREは不要なので、左のアイコンをクリックして、×がついてる感じのを選ぶといいと思います。 あと、NetBeansもダウンロード・インストールします。

    Javaをチラ見する - きしだのHatena
    yogasa
    yogasa 2016/04/12
  • Java on Microsoft Azure

    This is an explanation of Java on Microsoft Azure. There is a lot of deploy option for Java developer to deploy on Azure. In order to understand the Java on Azure, it may be useful.Read less

    Java on Microsoft Azure
  • JavaVMを論理分割したマイクロコンテナ上でJavaアプリを実行可能に。オラクルがコンテナ機能を実装したWebLogic Server 12c R2をリリース

    JavaVMを論理分割したマイクロコンテナ上でJavaアプリを実行可能に。オラクルがコンテナ機能を実装したWebLogic Server 12c R2をリリース 1つのJavaVMを、パーティションによって複数の「マイクロコンテナ」に区切り、マイクロコンテナごとに別々のJavaアプリケーションを実行できる機能を備えた、WebLogic Severの新バージョン「WebLogic Server 12c R2」の国内提供を日オラクルが開始しました。 WebLogic Serverは企業向けのWebアプリケーションサーバで、Java EE 7に完全準拠しています。 コンテナで安全分離、集約率は従来の3倍。Dockerにも対応 マイクロコンテナ内のJavaアプリケーションは管理ツールによってZipでパッケージにし、別のマイクロコンテナへ簡単に移行できるため、開発環境からテスト環境、番環境へと迅

    JavaVMを論理分割したマイクロコンテナ上でJavaアプリを実行可能に。オラクルがコンテナ機能を実装したWebLogic Server 12c R2をリリース
  • サーバサイドで複数Web APIを呼び出すときのデザインパターン - Qiita

    最近はエンタープライズのシステムでも、Web APIによるシステム間連携が増えてきました。そうしたときに、1リクエストで複数の連携先APIを実行し、結果をクライアントに返すということがままあります。 どう作りましょうか、という問題です。 前提として、サーバサイドでHTMLレンダリングせずに、Web APIの中継することとします。中継する意義は、流量やキャッシュをサーバサイドでコントロールできるところにあります。 クライアントから直接連携先のAPIにアクセスする設計にすると、リロードボタン連打などのDDoS攻撃うけたときに、自分たちでは対処できず、連携先に迷惑をかけてしまいますよね。特に「課金の関係などで直接APIをアクセスしなきゃいけないんだ」、とかでなければ、中継するように設計しておいた方がベターです。 Web APIの呼び出し 業務システムで使う場合は、ちゃんとリクエスト、レスポンスが

    サーバサイドで複数Web APIを呼び出すときのデザインパターン - Qiita
  • 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、

    恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
  • さいきょうの二重サブミット対策 - Qiita

    この記事はシステムエンジニア Advent Calendar 2015 - Qiitaの記事です。 弊社アーキ部で@kawasimaさんに教えてもらったさいきょうの二重サブミット対策について書いていきます! 二重サブミットが発生するケース 不正な更新リクエストが発生するケースとして、以下のものが考えられます。 サブミットボタンをダブルクリックする 戻るボタンで戻って、再度保存ボタンを押す 完了ページでブラウザリロードする CSRF攻撃による不正な更新リクエスト 1. サブミットボタンをダブルクリックする 確定ボタンをダブルクリックすることによって、ユーザが意図していないリクエストが発生してしまうケース。 2. 戻るボタンで戻って、再度保存ボタンを押す 処理完了画面から戻るボタンで前の画面に遷移し、再び確定ボタンを押すケース。 来は入力➡︎確認➡︎完了の画面遷移が適切だが、その画面遷移にな

    さいきょうの二重サブミット対策 - Qiita
  • Java8時代のフレームワーク Spark Framework - Qiita

    Spark Frameworkとは RubyのSinatoraというフレームワークにインスパイアされて作られた、シンプルなウェブ・アプリケーション・フレームワークです。 Java8のLambdaをサポートしていて、シンプルに記述することが可能です。 組み込みのWebサーバが内蔵されているため、APサーバを別途建てること無くアプリケーションを実行することが出来る点もイマドキな感じがします。 ScalaでもScalatraというSinatra Likeなフレームワークが有り、それを使っていた身としてはしっくりくるフレームワークでした。 依存関係を追加 では、Saprk Frameworkを使ってみましょう。 今回は、Gradleを使ってプロジェクトを作成します。 group 'sample' version '1.0.0-SNAPSHOT' apply plugin: 'java' sourc

    Java8時代のフレームワーク Spark Framework - Qiita
  • IOと例外の取り扱いについて:どっちが良いスタイル? - kmizuの日記

    追記:Java 7以降(つまり、現在)はtry-with-resources構文があるので、それを使えばよいです。ここでは、Java 6かそれ以前のコーディングスタイルについて主に言っています。 kmizu.hatenablog.com におけるkrxrossさんのコメント java脳だと、「fw = new PrintWriter(new File(file))」で例外が発生したら、fwが不定のまま、finally句の「fw != null」で困ってしまう。 そうならないために、nullで初期化するという話に見えます。 多分JAVAだと、nullを代入しないとコンパイルエラーになるか、eclipsが警告を出したと思います。 scalaでも同じではないですか ? 良く解っていない超初心者より を見て、強烈に不安になってしまったのですが、Javaだとこういうのが良いスタイルなんでしたっけ?

    IOと例外の取り扱いについて:どっちが良いスタイル? - kmizuの日記
    yogasa
    yogasa 2015/12/27
  • Java開発の性能改善! その3 ヒープダンプを取ろう - Qiita

    プロセスIDがわかったらjmapコマンドでダンプを取ります。 サーバのディスク容量に注意してください。 heapサイズを2GBとかに設定した場合は2GB以上のファイルが 生成されることがあります。 これで指定した場所にダンプファイルができます。 -dump:live,format=...というようにliveをつけるとGCが起きて コマンド実行時に活きているオブジェクトのみのダンプになるようです。 とりあえず今回はフルで取ります。 ヒープダンプの中身を解析をする 解析をするにはツールを使います。 java標準のjhatやMemory Analyzer、HeapAnalyzerなど いくつかありますが今回はMemory Analyzerを使います。 Eclipseベースなのでサイズの大きいダンプファイルを開く場合は MemoryAnalyzer.iniの設定でツール自体のヒープサイズを 増やす

    Java開発の性能改善! その3 ヒープダンプを取ろう - Qiita
  • [システム間連携]接続方向を逆転させるとうまくいく - Qiita

    システムAの更新内容を、別のサーバにあるシステムBにも反映させるためにデータ送る、というケースを考えます。 主流はWeb APIかMOMを使う方法かと思います。(俯瞰的な話は、20日目のこざけさんが書いてくれる、はず) しかし、A,B間で同時に一貫性を保たなくても良いケースは、企業間システム連携ではよくあります。 CAP定理でいうところの可用性+分断耐性をとりにいくパターンです。が、最大数秒程度で結果整合性は保ちにいきます。 システム間の接続 非同期ながら、ほぼリアルタイムでデータを反映していくので、応答性の高い接続手段が求められます。だが中間経路をHTTPでないプロトコルを通すハードルが高かったり、ファイヤーウォールなどで長時間接続を切られたりする問題があるので、私はよくWebSocketを使います。 だいたいの構成は以下のようになります。同期エージェント間をWebSocketでつなぎ、

    [システム間連携]接続方向を逆転させるとうまくいく - Qiita
    yogasa
    yogasa 2015/12/18
  • JavaOne2015報告またはこれからのJava

    2017/11/18 JJUG CCC 2017 Fallでの発表資料です。 #jjug_ccc #ccc_g5

    JavaOne2015報告またはこれからのJava
    yogasa
    yogasa 2015/12/17