タグ

Javaに関するzilog80のブックマーク (115)

  • ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在 - エンジニアHub|Webエンジニアのキャリアを考える!

    ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在 20年以上の歴史を持つJava言語ですが、近年は関数型を取り入れるなど大きく変化し、リリースサイクルも格段に短くなってますます進化しています。モダンなJavaプログラミングで必要となるラムダ式とStream APIについて、谷心(cero_t)さんによる詳細な解説です。 1996年にJava 1.0が登場して、もう20年以上がたちました。この間、Javaにはさまざまな言語機能やAPIが追加され、変化し続けています。 これだけ長い歴史を持つプログラミング言語ですから、利用者が多かったり、フレームワークやライブラリが充実していたりする一方で、書籍やWebに掲載されている情報が少し古かったり、研修で学ぶJavaが最新の動向を踏まえていなかったりするなど、長い歴史を持つが故の問題もあります。 特

    ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在 - エンジニアHub|Webエンジニアのキャリアを考える!
    zilog80
    zilog80 2020/03/03
    ラムダやStreamは現場で使われてるんかいな。
  • 来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)

    来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり) 2017年9月に「Java 9」が登場したばかりですが、いまから1カ月後の2018年3月には早くもJavaの新バージョン「Java 10」がリリースされます。そしてその6カ月後の9月にはさらに次の「Java 11」がリリース予定です。 Java 9以後のJavaは、毎年3月と9月の年2回メジャーバージョンアップを行う、タイムベースのリリースモデルを採用することになりました。今年はその最初の年となります。 オラクルによるJDKの提供方法やサポートポリシーも、これから大きく変更されることが明らかになっています。一般公開され無償でダウンロードできたOracle JDKの公開はJava 10が最後となり、サポートは3年

    来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)
    zilog80
    zilog80 2018/02/08
    OpenJDKと従来のJDKの違いは?
  • 第3回 Java 9のモジュール機能で何が変わるのか[JavaOne2017] | gihyo.jp

    2017年9月にリリースされたJava 9にはさまざまな新機能が追加されていますが、中でもとりわけ影響度が大きいのがモジュール機能です。この機能の導入にともなって、JDK 9には旧バージョンとの互換性を伴わないいくつかの修正が加わっているからです。すなわち、既存のアプリケーションやライブラリがJava 9ではそのまま動かない可能性がある、ということです。 10月1日から5日の5日間に渡って開催されたJavaOne 2017でも、このモジュール機能は大きなトピックのひとつとして挙げられ、多くのセッションが開かれました。レポートでは、それらのセッションで紹介された内容も踏まえながら、Java 9のモジュール機能についていま一度おさらいします。 モジュール機能の追加に至る紆余曲折 Javaへのモジュール機能の追加に関する議論がスタートしたのは10年以上も前のことになります。Javaアプリケーシ

    第3回 Java 9のモジュール機能で何が変わるのか[JavaOne2017] | gihyo.jp
    zilog80
    zilog80 2017/10/18
    モジュール
  • JVMはそんなに重くない | POSTD

    Clojureに反対する大きな理由がJVMです。この役立たずは重いですからね。 これは、数週間前に ZA TechSlackで見た投稿です。休暇中にClojureの話題を何件か見たのですが、投稿者はJVMについても繰り返し言及していました。 私はこの投稿について Slack上で少しつぶやいていました が、もっと広く理解され議論されるように、稿を書くことを決めました。 背景 以前は、私もJVMは重いと思っていました。2000年代の初めにJVMとPHPと比べていた頃の話です。当時は、.NETやColdFusionなど、別の重い製品が他にもありました。また、PerlPythonという軽めの製品もありましたが、私はWindowsを使っていたのでActivePerlやActivePythonはやはり少し重めでした。 私が初めてJVMに対する“恐れ”を克服したのは、小規模な製品アプリを、JRu

    JVMはそんなに重くない | POSTD
    zilog80
    zilog80 2017/03/05
    JVMはその存在を主張しすぎ。ただの実行環境なのだから、もっと空気のようになるべき。
  • [java][netbeans]NetBeans8.2にJShellを組み込む - きしだのHatena

    JDK9から導入されるJShell、IDEに組み込めれば最強だと思ってたのが、NetBeansで試せるようになっていました。 ずいぶん前にNetBeansにJShellを組み込む話が出てたのに、一向に開発ビルドに載ってこないと思ってたら、プラグインとして独立して開発されていました。 まず、次のHudsonサイトからupdate.xmlのURLをコピーします。 prototypes-repl9 [Hudson] これです。 http://deadlock.netbeans.org/job/prototypes-repl9/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml プラグインダイアログの、「設定」タブで「追加」ボタンを押して、「アップデート・センター・カスタマイザ」を開きます。 適当な名前をつけて、「URL」にさきほどのupda

    [java][netbeans]NetBeans8.2にJShellを組み込む - きしだのHatena
    zilog80
    zilog80 2016/11/17
  • [java][netbeans]Jackpotでリファクタリングを作成したらNetBeansが超便利に - きしだのHatena

    NetBeansには、Jackpotという言語クエリーエンジンが載っているという噂がありました。でも新機能として紹介されるでもなく、なんかもしかしたら使えるのかなーという感じですっかり忘れていたところ、今回のJavaOneで紹介があって、試してみたら超便利だったので、使い方を紹介します。 Jackpotのスクリプトは、クラスパス上のMETA-INF/upgradeにhintという拡張子でファイルを作るか「検査と変換」の「単一の検査」のところの「参照」から開ける「検査の管理」で「新規」を選ぶことで作成できます。 ただし、「検査の管理」で作成すると埋め込まれてる <!description="Empty Inspection">という行の処理がうまくいってないようで、この記述を消す必要があります。 このせいで、今まで何度ためしてもうまくいってませんでした。。。 それでは、試しに「foo ==

    [java][netbeans]Jackpotでリファクタリングを作成したらNetBeansが超便利に - きしだのHatena
    zilog80
    zilog80 2016/11/14
  • Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー

    GoogleOracleJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー 2016年5月、GoogleOracleJava APIを巡って争っていた裁判に最初の陪審員による評決がくだりました。結果は、GoogleJava APIAndroidに流用したことはフェアユースにあたる、というものです。 この評決にはどのような背景があり、IT業界にどんな影響を与えるものなのか。このことをテーマに2016年7月に行われた日Javaユーザーグループ主催の「JJUGセミナー」の内容を紹介しましょう。 記事は全部で4(その1、その2、その3、その4)。いまお読みの記事は「その1」です。 日マイクロソフトで開催したJJUGナイトセミナー 日Javaユーザーグループ会長 鈴木雄介氏。 今日の前半では私から、JavaAndroidとOSS(Ope

    Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える(その1)。JJUGナイトセミナー
    zilog80
    zilog80 2016/10/05
    分かりやすいまとめ。
  • IBM、自社のJavaVMをオープンソース化すると発表。COBOLやPL/IのランタイムをJavaVMにも。Java 9と同時に正式版リリースを予定。JavaOne 2016

    IBM、自社のJavaVMをオープンソース化すると発表。COBOLやPL/IのランタイムをJavaVMにも。Java 9と同時に正式版リリースを予定。JavaOne 2016 IBMは、これまで自社で開発してきたJavaVMをオープンソース化すると、サンフランシスコで開催されていたJavaOne 2016で発表しました。 JavaOne 2016の3日目の基調講演に登壇した同社Distinguished Engineer兼Java CTOのJohn Duimovich氏は、冒頭で聴衆に「With Community」(コミュニティとともに)と呼びかけたあと「Make Java Great Again」(Javaを再び素晴らしいものにしよう)と書かれたキャップをかぶって見せました。 これはIBMが、コミュニティと一緒にJavaを進化させていくのだという心意気を示したメッセージのように受け止め

    IBM、自社のJavaVMをオープンソース化すると発表。COBOLやPL/IのランタイムをJavaVMにも。Java 9と同時に正式版リリースを予定。JavaOne 2016
    zilog80
    zilog80 2016/09/26
    Javaはデスクトップで存在感ないのを何とかしてほしい。Googleと協力してビジネス向けのChromeOSの積極的な展開とその上でのJavaの利用を考えるとかさ。WindowsにもMacにももっと対応してほしい。
  • JavaOne 2016が開幕、JDK 9ではJava Shellが登場予定。JavaOne 2016

    JavaOne 2016が開幕、JDK 9ではJava Shellが登場予定。JavaOne 2016 サンフランシスコでJavaの年次イベント「JavaOne 2016」が開幕しました。基調講演に登場したJava Platform Groupチーフアーキテクト、Mark Reinhold氏は、来年3月にリリース予定のJDK 9の新機能を紹介。 さらにJDK 9の先に実現されるであろう新機能についても触れました。その内容をダイジェストで紹介します。 インタラクティブな「JShell」 Java Platform Groupチーフアーキテクト、Mark Reinhold氏。

    JavaOne 2016が開幕、JDK 9ではJava Shellが登場予定。JavaOne 2016
    zilog80
    zilog80 2016/09/21
    型推論もあまり強力にしすぎると、プログラマに分かりにくくなるんじゃないの?/もっとAPIを充実する方向でやってほしいんだけどねえ。
  • 「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita

    イマイチ理解しきれていなかったDIに関して調べていところ、Google Guiceの解説がすごく分かりやすかったので、和訳してみました。 (ところどころ意訳気味です。明らかに解釈の誤った訳がありましたら、ご指摘ください) ちなみにGoogle Guiceというのは、Googleが開発したDIライブラリです。この例ではJavaが使用されていますが、Scalaでも使用可能です。最近Play Frameworkでも採用されたので話題になっているようです。 用語の定義 文を読む前に目を通すことで、内容をスムーズに理解できます。 用語 意味 文中の例

    「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita
    zilog80
    zilog80 2016/08/17
    多分読まない
  • Oracle、Java EEから手を引く可能性も

    Ars Technicaは7月1日(米国時間)、「How Oracle’s business as usual is threatening to kill Java|Ars Technica」において、これまでのOracleおよびJava EEを巡るさまざまな取材や出来事から、Oracleが今後Java EEの開発から手を引く可能性があることを指摘した。最終的に判断する発表は行われていないため継続する可能性もあるとしながらも、現在は撤退と継続のの双方の可能性があるとしている。 OracleはSun Microsystemsの買収後、Sun Microsystemsが支援してきたオープンソース・プロジェクトへの支援を相次いで終了している。いくつかのプロジェクトはコミュニティ主導で新しいプロジェクトが発足している。Javaに関しても仕様策定において影響力を強めるなど、Oracleのオープンソ

    Oracle、Java EEから手を引く可能性も
    zilog80
    zilog80 2016/07/14
    引き受けて欲しいのはApacheかな。
  • Javaを学ぶべき10の理由

    fossBytesに7月12日(米国時間)に掲載された記事「10 Reasons Why You Should Learn Java Programming Language」が、プログラミング言語の中でJavaを学ぶべき10の理由を伝えた。プログラミング言語の中でJavaを学ぶべき10の理由を伝えた。Javaは世界中で広く使われているプログラミング言語の1つであり、TIOBE Programming Community Indexにおいても10年以上にわたって上位をキープしている。 掲載されている10の理由は次のとおり。 有料にせよ無料にせよ、すでに多くの学習教材が存在している。よくある質問はすでにフォーラムで取り上げられており、すぐに答えを見つけることができる。 仕事の需要が高い。最近ではAndroidアプリ開発などがJavaプログラマの需要を引き上げている。 オブジェクト指向プログラ

    Javaを学ぶべき10の理由
    zilog80
    zilog80 2016/07/14
    とは言うものの、バージョンが上がるごとにめんどくささが増してるし、APIは相変わらず垢抜けないし、いまいちOSに統合されてないし、JavaVMだけが頼り。
  • オラクル、次期Java EEはマイクロサービスやコンテナをサポートするものになるとコメント。9月のJavaOneで計画を発表予定。ただし本気度には疑問符も

    この懸念を裏付けるように、7月1日にArs Technicaは「How Oracle’s business as usual is threatening to kill Java」と題した記事で、OracleJava EEの開発から手を引く可能性があることを指摘しました。 こうしたなか、7月7日付けのThe Registerは、この懸念に対するオラクル広報担当からのコメントとしてJava EEの次期バージョンとなるJava EE 8の明確な計画をオラクルは持っており、マイクロサービスやコンテナ対応になることを記事「Oracle says it is 'committed' to Java EE 8 – amid claims it quietly axed future development • The Register」で紹介しています。 この記事に掲載されたコメントと同じものが、

    オラクル、次期Java EEはマイクロサービスやコンテナをサポートするものになるとコメント。9月のJavaOneで計画を発表予定。ただし本気度には疑問符も
    zilog80
    zilog80 2016/07/12
    Javaをひっぱる強力なリーダーがいないとこのまま消えてしまいそう。とはいうもののJavaEEはOracleで開発する必要があるのかね。
  • Red Hat、OpenJDKのWindows版「OpenJDK 8 for Windows」ディストリビューションをリリース。RHEL版と100%互換を保証

    Red Hatはオープンソースで開発されたJava SEのWindows版「OpenJDK 8 for Windows」のRed Hatによるディストリビューションを発表しました。 OpenJDK 8 for WindowsLinux対応のOpenJDK8と完全な互換性を保証しており、Windows版で開発したアプリケーションはそのままLinux版でも動作保証されます。 All Red Hat distributions of OpenJDK 8 on Windows are supported for development purposes, so that you have the convenience and confidence to develop and test in Windows or Linux-based environments and deploy your

    Red Hat、OpenJDKのWindows版「OpenJDK 8 for Windows」ディストリビューションをリリース。RHEL版と100%互換を保証
    zilog80
    zilog80 2016/06/29
    もうJavaはRedHatに開発してもらいたい。
  • Javaのロギングライブラリの歴史と現状をふんわり把握する(初学者向け) - Qiita

    かつて、Log4jというロギングライブラリがありました。 最強でした。1999年のお話です。 ロギングの大切さとLog4jの素晴らしさが見直され、Java標準にjava.util.loggingというAPIが追加されました。2002年のお話です。 java.util.loggingはLog4jを参考に作られましたが、ところどころ使いづらかったため、「標準」という武器をもってしても、Log4jに置き換わることはできませんでした。そのため、Javaの世界には2つのロギングライブラリが残ってしまいました。 Maven1.0が2004年にリリースされ、人々はOSSライブラリを組み合わせてアプリケーションを作るようになりました。 ところが、ロギングライブラリが2つあったため、Log4jを使っているライブラリと、java.util.loggingを使っているライブラリが混在してしまい、アプリケーション

    Javaのロギングライブラリの歴史と現状をふんわり把握する(初学者向け) - Qiita
    zilog80
    zilog80 2016/06/11
  • 作って理解するDIコンテナ - きしだのHatena

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

    作って理解するDIコンテナ - きしだのHatena
  • 作って理解するWebフレームワーク - きしだのHatena

    前回、簡単なDIコンテナを作ってみたので、次はこれを使ってWebフレームワークを作ってみたいと思います。 Webサーバーをつくる まず、WebフレームワークなのでHTTPサーバーが必要ですね。なので簡単なものを作ります。 とりあえずブラウザからリクエストを受け取ったら200 OKとHTMLを返すだけのサーバーです。 今回は、そこらのブラウザからアクセスできればいいや、ということで、RFCとかの仕様に準拠することは考えません。 public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSoc = new ServerSocket(8989); for (;;) { Socket s = serverSoc.accept(); new Thread((

    作って理解するWebフレームワーク - きしだのHatena
    zilog80
    zilog80 2016/04/19
    サーバーサイドの入門
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

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

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
    zilog80
    zilog80 2016/04/13
  • JDK統合で試しやすくなった、Java SE 9の注目機能「Project Jigsaw」

    2016年3月25日、Java SEのチーフアーキテクトであるMark Reinhold氏がblogで次のように述べました。 "The last major component, the module system itself (JSR 376 and JEP 261), was integrated into JDK 9 earlier this week and is now available for testing in early-access build 111." "最後のメジャーなコンポーネント、つまりモジュールシステムそれ自体(JSR 376とJEP 261)が今週はじめにJDK 9に統合されました。アーリーアクセスのbuild 111からテスト用に使用できます。" (Project Jigsaw: The module systemより引用。訳は筆者) ここでモジュー

    JDK統合で試しやすくなった、Java SE 9の注目機能「Project Jigsaw」
    zilog80
    zilog80 2016/04/08
    モジュールシステムはクライアント側のためにあるんだから、デスクトップやスマホも放置しないで頑張ってほしいねえ。Javaはサーバーだけじゃないよ。
  • Javaで書くBuilderパターンのパターン - Qiita

    個人的にBuilderパターンはオブジェクトの生成制御や、ものによっては可読性が高くて好きなパターンなんですが、その実装には用途によっていくつかパターンがあるので、まとめてみました。 生成するオブジェクトの条件 クラス名:People フィールド:String name(必須), Integer age(必須), String hobby(オプション) 必須要素はnullを禁止 PeopleクラスはStringを返り値とするhelloメソッドを持つ 今回はBuilderパターンの比較のため、パターン上必要でない限りgetterなどのメソッドは省略 Native Builder Builderパターンではなく、ただのコンストラクタ。Builderパターンを使いたくなるのはこれをやりたくないからだけど、比較のために記載。 class People { private String name;

    Javaで書くBuilderパターンのパターン - Qiita