ProgrammingとJavaに関するyad-ELのブックマーク (74)

  • Server::Starter を Java で利用する方法。または、System.inheritedChannel() の挙動について - tokuhirom's blog

    Server::Starter を Java でも使いたいなあ、そうすれば LL の場合と同じような運用ができるなあ、という要望をたまに稀によく聞きます。 そんなときに決まって返される答えは、fdopen できないから無理じゃないすかね。。 ということである。 SO_REUSEPORT しよう SO_REUSEPORT なら、java でもちょっとの工夫で使えるんじゃないの? っていう説が出てくる。 で、頑張れば jetty で SO_REUSEPORT 使っていい感じに実装できそうだな、ということはわかって、サンプルコードも書いてみた。 しかし、実装してから指摘されたのだが、弊社では CentOS 6 が標準となっており、CentOS 7 が来るのはいつになるのかさっぱりわからない。 つまり、とりあえずしばらくの間は実践で使える可能性がほぼないということだ。 とりあえず、出来たものは出来

  • 2015年のJavaによるWeb開発 - Qiita

    最近Javaしてますか? 昔はServletとJSPでやったな・・・Seasar2には感動したっけ、そんな思い出が浮かんだとしたらあなたのJavaはJ2EE、JavaEE的には5.0ぐらいで止まっているといわなければなりません。 ※Seasar2は2016/9/26にサポートが停止になります。OSSであるためforkされメンテナンスが続く可能性はありますが、一つの時代の区切りになると思います。 あれからJavaも進化を重ね、最新版のJavaEE7.0では他言語のフレームワークの生産性にも引けを取りません。 まだJavaやってるの(苦笑)の時代が長すぎたのか、2013年のリリースにもかかわらずJavaEE7.0についての記事は充実しているとは言えない状況です。ただ、その仕組みは素晴らしいものがあるのでこれを機に久々にJavaでもやってみるかなと思ってもらえれば幸いです。 ※2017/9/21

    2015年のJavaによるWeb開発 - Qiita
  • LL から Java に移行した人がはまりがちなこと - tokuhirom's blog

    こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e.printStackTrace(); } Perl

  • 見せてやろうJVMが持つ真のチカラを! JVMのオプションを一覧する方法について。 - Qiita

    java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions 尚、詳細が知りたい方は、この辺りを眺めるとより具体的に分かります。 src/share/vm/runtime/globals.hpp#l481 コマンドの説明 -XX:+PrintFlagsFinal -XXオプションの一覧を標準出力するオプションです。 -XX:+UnlockDiagnosticVMOptions 仮想マシンをチューニングする為のオプションを使えるようにするオプションです。 以下に示すリストでは {diagnostic}となっているものがこのフラグによって変更できるようになります。 -XX:+UnlockExperimentalVMOptions 将来サポート予定であるものの機能性が不安定なオプ

    見せてやろうJVMが持つ真のチカラを! JVMのオプションを一覧する方法について。 - Qiita
  • または私は如何にして例外するのを止めて golang を愛するようになったか — KaoriYa

    Java の finally よりも golang の defer のほうが筋が良さそうだ、 ということから考え始めた結果、 どうして私が golang を気に入ったのかがわかった気がしたので書いておきます。 ファイルをオープンし読み込みな処理で何かして終わったら閉じる、という関数を Javagolang で書き比べてみましょう。 Java で書くとこんな感じですね。 public static void readFile(String fname) throws IOException { InputStream s = null; try { s = FileInputStream(fname); // // Do something with "s". // } finally { if (s != null) { s.close(); } } }

  • [速報]Java 8が正式公開。ラムダ式、新しい日時API、JavaFX8など。NetBeans 8.0も登場

    [速報]Java 8が正式公開。ラムダ式、新しい日時APIJavaFX8など。NetBeans 8.0も登場 米オラクルは3月18日(日時間3月19日早朝)、Javaの最新バージョンとなるJava 8を正式に公開しました。 #Java8 Now Available http://t.co/QymKlAtp99 — Java (@java) 2014, 3月 18 Java 8は当初はラムダ式を実現するProject Lambda、JDKをモジュラー構造にするProject Jigsawなどが主要な機能となる予定でしたが、Project Jigsawの実装はJava 9へ持ち越すことになったため、Java 8ではラムダ式が最大の新機能となりました。そのほか新しい日時APIJavaFX8なども含まれています。 Java 8に対応した統合開発ツールのNetBeans 8.0も公開されていま

    [速報]Java 8が正式公開。ラムダ式、新しい日時API、JavaFX8など。NetBeans 8.0も登場
  • あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(後編) - Taste of Tech Topics

    こんにちは。 アキバです。 日3/18、ついに、Java8が正式リリースされますね! もうダウンロードされましたか?ってまだですかね?私はまだです(だって公開前にエントリ書いてるんだもんね) 2014/03/19追記:Oracleのページが更新されました!→こちら さて、前回に続いて、Java8で追加された地味で便利なAPIを紹介していきます。 今回は、みんな大好きMapとConcurrent、あとちょびっとComparatorです。 3. Map操作編 (1) Map#getOrDefault() これまでは、Mapから値を取得してnullだったらデフォルト値を使用する、みたいなコードを以下のように書いていたと思います。 Map<String, String> map; // 何らかのMap String value = map.get("key"); if (value == nul

    あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(後編) - Taste of Tech Topics
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
  • キュー構造をJavaで実装してジェネリック型を理解する

    キュー構造をJavaで実装してジェネリック型を理解する:【改訂版】Eclipseではじめるプログラミング(19)(1/3 ページ) これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります 安全なままコレクションフレームワークを利用するために 今回は、「ジェネリックス(Generics)」について説明します。 Javaでは、すべてのクラスはjava.lang.Object型から派生しているので、どのオブジェクトもObject型として扱えば、ある処理をさまざまなデータ型に対して適用できます。 ただし、この場合は型について安全であることを保証するために、自分でチェックコードを記述したりキャス

    キュー構造をJavaで実装してジェネリック型を理解する
  • クラスのメンバに利用制限を付与するアクセス制御

    ここまでの連載で、クラスの基礎的な理解は終えていただけていると思います。今回は、クラスのメンバであるメソッドや変数について、もう少し掘り下げていくことにします。 題に入る前に、少し復習をします。Java的なプログラムを記述するには、ユーザーが扱うのはどんなデータなのかを念頭に置いて、例えばHTML文書を扱うならHTMLDocumentというクラスを設計する、といった発想が必要であることは理解いただけていると思います。ユーザーがWebブラウザで扱うのはHTML文書ですので、WebブラウザをJavaで作るとしたら、まず設計しなくてはならないのはHTML文書を扱う「HTMLDocument」などという名前のクラスになるはずです。 クラスをWebブラウザで理解する HTMLDocumentというクラスは制御文を使ったアルゴリズムの実例として「第7回 制御文を使いこなす」で取り扱いました。といって

    クラスのメンバに利用制限を付与するアクセス制御
  • Is "throws Throwable" good practice

  • throwsを用いるかどうかはメソッドの役割で決まる

    例外が発生する可能性があるメソッドでは、そのメソッドにおいて例外を捕捉するか、そのメソッドを呼び出したメソッドに例外を投げる(任せる)かを選ぶ必要があります(例外がRuntimeExceptionのサブクラスである場合を除く)。前者を選ぶ場合は「try-catch」構文を用い、後者を選ぶ場合は「throws」を用います。 このどちらを選択するかは、機械的には決められません。メソッドの役割を考えて選択する必要があります。また、複数の例外がある場合、「try-catch」すべき例外と「throws」すべき例外に分けることを考えましょう。 まず、コンパイルエラーを逃れるためだけの「throws」は避けるべきです。下は最も悪い例といえるでしょう。 6行目の「throws Exception」を外すと分かりますが、このメソッドは、URLクラスのコンストラクタが不正なURLを受け取ったときに投げる M

    throwsを用いるかどうかはメソッドの役割で決まる
  • やさしいデスマーチ

    7月31日付で2年半ほど在籍した株式会社エスプラニングを退職しました。退職系のエントリーはブクマが稼げると聞いて、状況報告を書こうかなと思います。 前職でやっていたこと 前職は主にJavaによるアプリケーション開発が主業務でしたが、珍しくWeb系というわけでもありません。入社した頃は、Swingでのデスクトップアプリケーションが主プロダクトでした。最近はWebアプリケーションやスマフォ系もやっています。そんな会社で自分が行ってきたことは、開発環境の整備、コード品質の向上、プロジェクト全体の進め方の改善などです。 具体的には、ユニットテスト、読みやすいコード、リファクタリング、レビュー、KPT、カンバン、Trac/Redmine、バージョン管理、継続的インテグレーション、ユースケース駆動開発などなどです。 ぶっちゃけ言えば、入社した当時はお世辞にも技術レベルは高いと言えませんでした。バージョ

    やさしいデスマーチ
  • JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 - きしだのHatena

    lombokは、JavaでのアクセッサやtoString、equalsなどボイラープレートなコードをコンパイル時に生成してくれるライブラリです。 ただ、こういったコードの生成は、IDEを使えば自動で行えるので、わざわざlombokを導入するまでもないと考えることもできますが、ぼくはlombokを導入するべきだと考えて、lombokを使うようにしました。 このとき「lombokを導入するべき」と考えた理由を書いておきます。 lombokとは lombokは冒頭でも書いたように、Javaのアクセッサなどを生成してくれるライブラリです。 Project Lombok import lombok.*; @Setter @Getter @AllArgsConstructor @NoArgsConstructor @ToString public class LombokSample { privat

    JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 - きしだのHatena
  • Javaを使うメリットはありますか? はい、それはもちろんあるに決まってます! - ブログなんだよもん

    /.Jに聞け:Javaを使うメリットは? | スラッシュドット・ジャパン デベロッパー え、ありますよね? Webアプリに限っても。 というか、上げてるデメリットが現代的じゃないなぁ... 個人的には少数精鋭チームを作れてないならJavaはかなり有りな選択だと思っています。 ※ Java使ってるメンバーがスキルが低いのではなく、LL系で高品質なものを作るのにスキルが必要で、例えスキルがあっても多人数開発にはあまり向かない、という意図 というわけで、自分が思うLL系言語ではなく、JavaでWebアプリを開発するメリットを書いてみます。 静的型づけ言語 HaskellとかOCamlとかScalaとか、その辺の超強力な型付け言語から見ると弱いですが、多くのLLと違い静的型付けな事が特徴です。 これは型というメタ情報を言語仕様に明確に取り込んでいるということです。以下のメリットがあります。 人間が

    Javaを使うメリットはありますか? はい、それはもちろんあるに決まってます! - ブログなんだよもん
  • Java8でラムダで書くかメソッド参照で書くかの指針 - きしだのHatena

    Java8では、関数型インタフェースへの値として引数が揃ったメソッドの呼び出しを単純に渡す場合に、ラムダの形でもメソッド参照の形でも書くことができます。 このときの書き分けの基準を考えてみます。 つまり、 public void actionPerformed(ActionEvent ae) { System.out.println("押された"); } のようなメソッドがある場合に JButton b; b.addActionListener(ae -> actionPerformed(ae));//ラムダ と書くか、 JButton b; b.addActionListener(this::actionPerformed);//メソッド参照 と書くかという話です。 まず、この例のactionPerformedメソッドのように、関数型インタフェースに渡すことが前提で定義されたメソッドのよ

    Java8でラムダで書くかメソッド参照で書くかの指針 - きしだのHatena
  • Java EEのCDIで定義しておくと便利なプロデューサーとインターセプター - きしだのHatena

    このエントリはJava EE Advent Calendar 2013の13日目の金曜日です。 昨日は@nagaseyasuhitoさんでした。 メソッドバリデーションのユニットテスト | nagaseyasuhito Daily works. 明日は@yamadamnさんが、ぼくの知らない世界のことを書いてくれるんだと思います。 その前に Java EE 8に盛り込んで欲しい機能のアンケートが行われています。 Jersey MVCを標準に入れるべきかとか、FaceletsをJSFから切り離すべきかとか、CDIの@Stereotypeを他のアノテーションにも適用するべきかとか。MVCは欲しいし、そのMVCとJSFとでFaceletsテンプレートを共有したいし@Stereotypeでアノテーションをまとめれれば「アノテーション地獄」もなくなるし。 興味ない項目は「Not sure」にすればい

    Java EEのCDIで定義しておくと便利なプロデューサーとインターセプター - きしだのHatena
  • Codespell – Java言語がそのまま呪文となる教育用3Dゲーム

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

    Codespell – Java言語がそのまま呪文となる教育用3Dゲーム
  • javaのロガーが多すぎて訳が解らないので整理してみました - 文系プログラマによるTIPSブログ

    最初は誰しもがファッ!?となるんですよねロガーって。 いずれtree-tipsで公開しようと思っている、solrのプロジェクトを今作っています。mavenでjarを管理している訳ですが・・ なんだこのロガーの数は!! commons-logging、log4j、slf4j-api、jcl-over-slf4j、logback-classic・・・・、こいつら一体何が違うんだ!どう使い分けるんだ!そもそも必要なのか!?となりました。 昔はcommons-logging+log4jというのがトレンドだった訳ですが、今はslf4j+logbackがトレンドになり、jdkも1.4から1.7になり、これらトレンドが推移する過程で、いろいろなjarが旧式に依存してしまい、旧式依存を解決するためにアダプタが登場し始め、mavenでjarを収集すると大抵両方入ってしまい、カオスになっているのです。 特にs

    javaのロガーが多すぎて訳が解らないので整理してみました - 文系プログラマによるTIPSブログ
  • Creating a WebSocket-Chat-Application with Jetty and Glassfish - DZone

    This article describes how to create a simple HTML5 chat application using WebSockets to connect to a Java back-end. I decided to include a Jetty 8 and a GlassFish 3.1 example to demonstrate the current approaches for server side WebSocket implementations. While a Servlet can easily be migrated from one Servlet container to an other, a WebSocket implementation can not (at the moment). Even with on

    Creating a WebSocket-Chat-Application with Jetty and Glassfish - DZone