タグ

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

  • Java8新機能 ラムダ式を触ってみました - Yuji Blog

    来年正式版が出るJava8ですが、こちらからDLして昼休みにうわさのラムダ式をちょっと触ってみたので、その殴り書きです。 ちなみにJavadocはこちら。 Listの繰り返し たとえばこんなListがある場合に List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); これまではこんな感じで処理していました。 for (int x : list) { System.out.println(x); } これをJava8で追加されたforEachとか使うと、 list.forEach(new Consumer<Integer>() { public void accept(Integer x) { System.out.println(x); } }); こう書けます。でもこれはまだラムダ式ではないです。 ここからさらにいろいろと省略することが出来て

    Java8新機能 ラムダ式を触ってみました - Yuji Blog
    zilog80
    zilog80 2013/08/25
  • Java8 Lambdaの文法拡張まとめ - きしだのHatena

    デフォルトメソッドは前に解説しました。 Java8で最もインパクトのある構文拡張、デフォルトメソッド ここでは、それ以外の構文拡張についてまとめておきます。 ラムダ式 実装すべきメソッドがひとつだけのインタフェースを関数型インタフェースといいます。 UnaryOperatorインタフェースは実装すべきメソッドがapplyメソッドひとつだけなので、関数型インタフェースになります。 たとえば、UnaryOperatorインタフェースを実装したクラスを定義すると次のようになります。 class MyOp implements UnaryOperator<String>{ @Override public String apply(String t) { return "** " + t + " **"; } } このUnaryOperatorインタフェースを使う、List#replaceAllを

    Java8 Lambdaの文法拡張まとめ - きしだのHatena
    zilog80
    zilog80 2013/08/24
  • マルチコア時代のプログラマは関数脳になろう〜Java8のススメ〜 - Tech-Sketch

    CPUのクロックアップに限界が訪れ、マルチコア化することで処理性能向上を目指す時代になりました。これからのプログラマには、マルチコアで処理性能が向上するプログラム=マルチスレッドで並列処理が可能なプログラムを書く能力が必要になります。今回は「関数型」でプログラムを書くことによって、いとも簡単に並列化ができることを実例を元に解説します。 関数型プログラミングと並列処理 「関数型でプログラムを書くことで簡単に並列化できる」と書きましたが、そもそもここで言う「関数」とは何なのでしょうか? 関数型プログラミングの特徴 関数型プログラミングの「関数」を理解するためには、数学における「関数」を想像するとわかりやすいでしょう。 例えば三角関数を用いた y=cos(x) という式を考えてみます。この式に入力値 x=0 を与えた場合、いつでも必ず結果は y=1 になります。x= π/3 の場合は y =

  • 関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのHatena

    Java8で関数が値として扱えるようになりました。 このことが、「関数が渡せると便利だよね」という観点ではなく、プログラミング言語としての能力をどのようにあげるか考えてみます。 圏論からのテクニックが使いやすくなる 集合論はどちらかというと値にたいする理論でしたが、圏論は関数呼び出しに関する理論です。 プログラムには、関数呼び出しを連結させて値を変換していくという側面があります。 そのような関数呼び出しの扱い方を整理するのが圏論で、圏論の考え方を使うことでより安定したプログラムを書くことができます。 モナドなど圏論由来のテクニックを使うには、どうしても関数を値として扱う必要があります。 関数を値として扱うことで、圏論のテクニックが使いやすくなり、安定したプログラムの書きやすさにつながります。 型の証明能力があがる 動的な型付の言語にくらべて、静的な型付の言語はプログラムが間違いにくいといわ

    関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのHatena
    zilog80
    zilog80 2013/08/08
  • TwitterやFacebookで使われている「Apache Hadoop」のメリットや歴史を作者自らが語る

    大規模データの分散処理を支えるJavaソフトウェアフレームワークであり、フリーソフトウェアとして配布されている「Apache Hadoop」。その作者ダグ・カティング(Doug Cutting)さんが「Cloud Computing World Tokyo 2011」&「Next Generation Data Center 2011」において「Apache Hadoop: A New Paradigm for Data Processing」という講演をしていたので聞きに行ってきました。 満員の客席。 皆様を前にして講演できることを大変光栄に思っております。「Apache Hadoop」について皆様に伝えていきますが、これはまさにデータ処理の新たなるパラダイムを提供するものではないかと私は思っております。 まずは簡単に自己紹介をさせていただきましょう。私は25年に渡ってシリコンバレーで仕

    TwitterやFacebookで使われている「Apache Hadoop」のメリットや歴史を作者自らが語る
  • 企業のJavaユーザー、8割強が旧版放置 Win 95時代の脆弱性も残る

    Bit9の調査によると、企業のエンドポイントのうち82%が、既にサポートの打ち切られたJava 6を実行していることが判明した。 多くの企業でエンドポイントに古いバージョンのJavaが残り、深刻な脆弱性が多数放置されたままになっている実態が、セキュリティ企業Bit9が7月18日に発表した調査で判明した。 Bit9の調査では、各国の企業数百社のエンドポイント約100万台についてJavaの導入状況を調べた。その結果、調査対象のエンドポイントの82%がJava 6を実行していることが判明した。Java 6については既にOracleがサポート打ち切りを宣言している。 社内のエンドポイントに存在するJavaのバージョンは、平均して50を超えていることも判明。最新版のJavaを導入している企業は1%にも満たなかった。最も多かったのは「Java SE 6 Update 20」の9%で、このバージョンには

    企業のJavaユーザー、8割強が旧版放置 Win 95時代の脆弱性も残る
    zilog80
    zilog80 2013/07/19
    互換性確保のために古いバージョンも残すようにしたのが間違いだったか。
  • Struts1職人の朝は早い - きしだのHatena

    Struts1職人の朝は早い。 「毎日毎日DBとアプリサーバーが違う。機械ではできない」 「このstruts-config.xmlはダメだ。ほら、すぐ裂けてしまう」 ここ数年はLLとScalaに押されているという。 下町Struts1の灯火は弱い。だが、まだ輝いている。 「やっぱりアレですね、たいていの若い人はすぐやめちゃうんですよ」 「それを乗り越える奴もたまにいますよ。そういう奴が、これからのStruts1界を引っ張っていくと思うんですね」 今日も彼は、日が昇るよりも早くstruts-config.xmlの整形を始めた。明日も、明後日もその姿は変わらないだろう。 そう、Struts1職人の朝は早い。 夜も遅い。

    Struts1職人の朝は早い - きしだのHatena
    zilog80
    zilog80 2013/06/25
    夜も遅いんじゃ、救われないネタだw
  • Java、40のセキュリティアップデートへ - ユーザーは迅速に対応を

    Javaの新しいアップデートスケジュールに従ったアップデートが6月18日(米国時間)に実施されるはずであり、このアップデートは40ものセキュリティ修正を含む重要なものになる可能性が高いことから、迅速にアップデートを適用すべきだという指摘がNaked Securityの記事「Get ready! Oracle to fix 40 holes in Java on Tuesday, 18 June 2013」に掲載された。 実際にどういった修正が実施されるかの具体的な説明は実際にアップデートが実施されてから紹介するとしているが、正規表現に関するバグやコードの遠隔実行のセキュリティ脆弱性などの修正が取り込まれているだろうと説明している。アップデートが公開されるまでの間は、ブラウザにおけるJava Appletの実行を無効化しておくなどの対策で、これらのリスクを低減できるという説明もある。 Ora

    zilog80
    zilog80 2013/06/19
    JavaとFlashのアップデートは面倒だ。Windows Updateに入れてもらえないのかね。
  • WebSocketをネタにJava EE 7正式版を試してみる - きしだのはてな

    Java EE 7がリリースされて、それに対応したGlassFish 4もリリースされました。 ついでに、Java EE 7やGlassFish 4に対応したNetBeans 7.3.1もリリースされています。 ということで、NetBeansとGlassFishを使ってJava EE 7を試してみようと思います。 今回は、Java EE 7の中でも簡単なコードで動きの派手なWebSocket対応を試してみます。 ダウンロード まずNetBeansをダウンロードします。 https://netbeans.org/downloads/ NetBeansは、ちょっと試すにしてもずっと使うにしても、インストーラーではなくzipで落とすほうが楽なので、ここでは「プラットフォーム」に「OSに依存しないZIP」を選択します。 「サポートテクノロジー」が「Java EE」か「すべて」のものをダウンロードし

    WebSocketをネタにJava EE 7正式版を試してみる - きしだのはてな
    zilog80
    zilog80 2013/06/13
  • Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena

    Java8でのラムダの使い方などを説明してきたのですが、構文拡張自体には触れていなかったので、改めてここで簡単に説明しておこうと思います。 まずは、Java8で実際に最もインパクトがある言語拡張、インタフェースのデフォルトメソッドです。 デフォルトメソッドとデフォルト実装 いままでインタフェースには実装をもつことができませんでしたが、Java 8からはインタフェースが実装をもてるようになります。 実装をもつメソッドを定義するときには、キーワードdefaultをメソッドの前につけます。 interface Foo{ void print(String s); default void twice(String s){ print(s); print(s); } } twiceメソッドが実装をもっています。この実装をデフォルト実装といいます。 デフォルトメソッドを実装するクラスで、デフォルトメ

    Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena
    zilog80
    zilog80 2013/06/10
    インターフェースが抽象クラスみたいになったな。なんの目的があるんだろう?/なるほど、Mxinによる多重継承か。これはかなり大きな仕様変更だ。いろんなことに影響が出そう。
  • Java8のlambda構文がどのようにクロージャーではないか - きしだのHatena

    Java8にlambda構文が入りましたが、これはクロージャーではない、とされています。 では、どのように「クロージャーではない」のか、ちょっと見てみます。 まず、lambdaを返すメソッドを定義します。 public static Supplier<String> createMessenger(String name, String address){ return () -> { return String.format("私は%s、%sに住んでる", name, address); }; } 呼び出すと、こんな感じでSupplierを受け取ります。 Supplier<String> messenger = createMessenger("きしだ", "ふくおか"); このSupplierを実行すると、次のようになります。 System.out.println(messenger.

    Java8のlambda構文がどのようにクロージャーではないか - きしだのHatena
    zilog80
    zilog80 2013/05/22
  • 日本オラクル、Java SE 7の最新ドキュメントを日本語版で公開

    オラクル、Java SE 7の最新ドキュメントを日語版で公開:Java SE 7の最新情報を記載 日オラクルは5月14日、「Java Platform, Standard Edition 7(Java SE 7)」の最新情報を記載したドキュメント類の日語版を公開した。 日オラクルは5月14日、「Java Platform, Standard Edition 7(Java SE 7)」の最新情報を記載したドキュメント類の日語版を公開したと発表した。Javaエンジニア向けカンファレンスイベント「Java Day Tokyo 2013」にタイミングを合わせての公開となる。 この日語ドキュメントでは、2011年7月に提供開始されたJava SE 7の機能やコンポーネント一覧をまとめている。主に「Java Platform, Standard Edition 7 ドキュメント」と「

    日本オラクル、Java SE 7の最新ドキュメントを日本語版で公開
    zilog80
    zilog80 2013/05/15
    やっときた。日本人は英語使えない奴が多いから、オラクルはJavaでビジネスしたかったらもっと頑張らないと。
  • Java 8を関数型っぽく使うためのおまじない - きしだのHatena

    やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで、短く書けるおまじない考えてみました。 Function型 さて、まずはJava 8で標準で入ったFunction型をみてみましょう。パッケージ名まで含めるとjava.util.funciton.Functionです。 こんな感じで使います。 Function<String, String> enclose = s -> "[" + s + "]"; Genericsでの型指定の最初が引数、あとが戻り値の型です。ここではStringをとってStringを返す関数としてencloseを定義しています。 これを呼び出そうとすると、こんな感じ

    Java 8を関数型っぽく使うためのおまじない - きしだのHatena
    zilog80
    zilog80 2013/05/01
  • 文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena

    Java SE 7から、switch構文で文字列が使えるようになりました。 public void hoge(String s){ switch(s){ case "a": System.out.println("AA"); break; case "b": System.out.println("BB"); break; default: System.out.println("Other"); } } ところが、残念なことに、sがnullの場合はdefaultには飛ばず、ぬるぽが発生します。 そこで、null判定は事前にif文で行うことになるので、次のようなif-else switchイデオムを使うと便利です。 if(s == null){ System.out.println("Null!"); }else switch(s){ case "a": System.out.printl

    文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena
    zilog80
    zilog80 2013/04/26
    なるほど!
  • Java 8リリースに遅れ、2014年3月へ

    Oracle Javaプラットフォームグループのチーフ・アーキテクトMark Reinhold氏は4月18日(米国時間)、自身のブログにおいてJava 8のリリーススケジュールについて発表した。Javaのブラウザプラグインにおけるセキュリティ対策にエンジニアを優先的に割り当てた結果Java 8の開発に遅延が生じており、当初今年の9月を予定していたJava 8 GAのリリースは現実的に不可能になったこと、今のところ2014年3月でのリリースが現実的であることなどを説明している。 Mark Reinhold氏はJava 8 GAのリリースに関して次の3つの案をそれぞれ説明。 Java 8 GAにLambdaを搭載するのを諦め、スケジュール通り今年の9月にリリースする Lambdaは残すものの、フィードバックや試験にかける時間を減らして9月にリリースする Lambdaが完成するまでリリースを延期

    zilog80
    zilog80 2013/04/22
    もうOracleはJavaの開発を他に譲れ。
  • : Codespell - Java言語がそのまま呪文となる教育用3Dゲーム

    カリフォルニア大学サン・ディエゴ校の計算機科学者達が開発した Codespell は、一人称視点の3Dゲームなのですが、その一番の特徴は、プレイすることでJavaプログラミングを身につけられるという点です。 Codespellでは、プレイヤーは小動物ノーム(gnome)たちが住む土地にやってきた魔法使いです。ノーム達は過去に魔法を使って生活していたのですが、今は魔法をうまく使えなくなっています。魔法の呪文はJava言語プログラムで、物体を浮遊させるとか火を起こすといった7つの手持ちの呪文を使って、ノーム達を助け、火を消したり川を渡ったりといったクエストを解き、バッヂを獲得するのがゲームの目標です。 ゲームプレイ 3D世界の岩が燃えていますが、 岩オブジェクトというターゲットオブジェクトに対して onFire()メソッドにfalseを渡す、という呪文を呼ぶプログラムを書き、実行することで、

    : Codespell - Java言語がそのまま呪文となる教育用3Dゲーム
    zilog80
    zilog80 2013/04/10
    ミステリーハウスなどのテキスト入力型のアドベンチャーゲームをいま作るとこうなりましたって感じ。
  • ラムダ式、JAR脱獄、JavaScript/Node.jsに接近するJDK 8、そして9へ

    ラムダ式、JAR脱獄、JavaScript/Node.jsに接近するJDK 8、そして9へ:JavaOne Tokyo 2012まとめレポート(後編)(1/3 ページ) Lambda、Jigsaw、Nashornとは 4月4日と5日の2日間に渡って開催された日オラクル主催のJava技術者向けイベント「JavaOne Tokyo 2012」では、全国からJava開発者が集まり、Java周辺の最新動向や技術的なTips、活用事例などの話題に盛り上がった。 レポートの前編では、Java SE/EE/MEそれぞれの現状と今後の動向に焦点を当てて紹介した。後編は、Java SE/JDKについて、「Project Lambda」「Project Jigsaw」、そして新しいJavaScriptエンジンである「Nashorn」に関するセッションの様子をレポートする。 「Project Lambda」の

    ラムダ式、JAR脱獄、JavaScript/Node.jsに接近するJDK 8、そして9へ
  • オープンソースJava O/Rマッピングソフト一覧(2013年1月版) | Unofficial DB2 BLOG

    << 無料のDB2 Express-cが10.1 FP2に更新。Mac OS X版のDB2もv10.1に更新! | main | #clubdb2 2013年第1回は1/25(金)「pureScaleの事例とコレカラ」 >> 2013年になりました。明けましておめでとうございます。 今年も少しづつですが、blogを更新していこうと思っていますので、どうかよろしくお願いいたします。 新年一回目のエントリは、以前に以下に書いた「Java言語用のO/Rマッピングオープンソースフレームワーク一覧」の更新です。 - オープンソースJava O/Rマッピングソフト一覧(更新)※2008年4月のエントリ | Unofficial DB2 BLOG リストに挙げているのは、オープンソースで、かつJava用のO/Rマッピング機能を持つソフトです。いわゆる「フルスタックフレームワーク」にはO/Rマッピング機能

  • @IT:いまから始めるJava 第14回 抽象クラスとインターフェイスを理解する

    すべてのクラスのスーパークラスとは? 連載では、これまで主にString型を使ってJavaのさまざまな言語仕様について説明してきました。最もお世話になるString型がそうであるように、クラスとはある形式のデータを扱うための「道具」です。また、HTML 2.0とHTML 3.2のように、扱うデータの形式が変更されたときは、全く新しくクラスを作るのではなく、変更に関係するメソッドをオーバーライド(上書き)すればよいことも学びました。オブジェクト指向の目的は既存のコードを流用することによって開発の効率を高めることです。メンバ変数やメソッド、継承といったオブジェクト指向特有の概念も、その目的のために用意された機能だと考えれば、すんなり受け入れられたのではないでしょうか。 最終回は、おさらいをかねて抽象クラスとインターフェイスについて説明することにします。抽象クラスとインターフェイスもまた、既存

    @IT:いまから始めるJava 第14回 抽象クラスとインターフェイスを理解する
    zilog80
    zilog80 2013/03/19
  • 8つの質問で、Java SI業界の現状を知る - レベルエンター山本大のブログ

    Webサービス系の会社の隆盛があって、人材流出が騒がれたのが1−3年ぐらい前だろうか。 SIの産業の人材動向が、今どうなってるかって? 大方の予想より凄惨ですよ。 それが分かる方法がある。JavaWeb技術者に技術力を問う8つの質問によってだ。 SI業界のエンジニアの平均レベルを知りたくって、いろんな会社さんのJavaWeb開発者(経験者)向けに以下のような8つの質問を継続的にしている。 対象者としては、Java経験3から10年ぐらいの現役バリバリのはずのJavaエンジニアだ。 その8つの質問というのはこんな問題だ。 JavaWeb技術者に技術力を問う8の質問 インターフェイスのメリットを一言で表して下さい。(筆記解答) HttpRequestオブジェクトからPostされたデータを取得するServletのメソッドは何ですか?(筆記解答) Sessionのスコープを端的に説明してください。(

    8つの質問で、Java SI業界の現状を知る - レベルエンター山本大のブログ