タグ

javaに関するtakkecyのブックマーク (640)

  • Java 8から増えてたExplicit receiver parameters - 水まんじゅう2

    Java 8からこういう書き方が出来るようになっていたようです。(初めて知った) public class Main { public String getString(Main this) { // thisで自分自身が引数になっている return this.toString(); } public static void main(String[] args) { Main main = new Main(); System.out.println(main.getString()); //呼び出すときは何も書かなくてもよい } } 何がうれしいかというと、自分自身を呼び出すときにアノテーションがつけれるようになる。(そして処理が出来るようになる) なんか、おおっ!という感じ。 呼び出すときに何も書かなくてよいというのがものすごくJavaっぽくないので驚きました。 http://bl

    Java 8から増えてたExplicit receiver parameters - 水まんじゅう2
    takkecy
    takkecy 2016/06/15
  • Web Application Server を動かす時の Java8 起動オプションのメモ - その手の平は尻もつかめるさ

    一般的な Web Application Server *1 を Java8 で動かすにあたって,最近有効にしている起動オプションについてメモ. 何か間違っていたり,あるいは「こっちの方が良い」みたいなのがあれば教えて下さい. -server server mode で起動させる (指定しないと client mode になる可能性がある,マシンスペックによってスイッチする?). -Djava.net.preferIPv4Stack=true If IPv6 is available on the operating system the underlying native socket will be an IPv6 socket. This allows Java(tm) applications to connect too, and accept connections from,

    Web Application Server を動かす時の Java8 起動オプションのメモ - その手の平は尻もつかめるさ
    takkecy
    takkecy 2016/03/13
  • Guiceで簡易的なプラグインシステムを構築するには | さにあらず

    Java 界隈には OSGi といういかついダイナミックモジュールシステムがあるのですけども、これは解決しようとしている問題の量が非常に多いのでちょっとしたものを作るために使おうとすると非常に辛い。 そもそも、アプリケーションのブートストラップ部分から全部 OSGi ベースで作りこまないと良い感じに動いてくれません。 そこで、OSGi を前提としたアーキテクチャ設計が必要になるのですけども、ちょっと便利なツール作りたいだけなのに膨大な時間をかけて OSGi を勉強するかと言われると、しませんよね。 という訳で、Java において簡易的なプラグインシステムを Guice で作ってみましょうという話です。 尚、Spring 界隈で実現する方法については@makingさんのエントリをどうぞ。 DI コンテナで実現する簡易プラグイン機構コードの場所#必要に応じてエントリ内にコードはありますが、実際

    Guiceで簡易的なプラグインシステムを構築するには | さにあらず
  • Javaのマイクロフレームワーク ― この新トレンドは見逃せない | POSTD

    この記事は、JavaScalaの例外分析・パフォーマンス監視のツール Takapiblog に投稿されたものです。 Javaのマイクロフレームワークとは何か、推奨される理由とは? どんなプログラミング言語にも、長所と短所はあるものです。例えばJavaは、安全性の高さや、厳しいテストを経ていること、後方互換性などの利点を持つ言語です。しかし、その代償として、アジリティ(俊敏性)や合理性といった面が少なからず犠牲になっています。冗長で、Java自体が肥大化しているという事実も否定できません。とはいえ、新規開発や大規模な開発を行いたい場合、JVM(Java仮想マシン)はバックエンドとして非常に魅力的です。JVMはパワフルな上に、非常に厳しい環境でテストされています。このような利点があるため、結果的にJavaは広く使用され、積極的にデプロイされているのです。 しかし、このJavaの現状を皆

    Javaのマイクロフレームワーク ― この新トレンドは見逃せない | POSTD
    takkecy
    takkecy 2015/07/13
  • Play 2.4が依存性注入を採用,Java 8に移行

    TypesafeのPlayチームがWebフレームワーク“Damiya”のバージョン2.4をリリースした。前回のメジャーリリースPlay 2.3からは,およそ1年ぶりになる。今回のリリースは,PlayのコントリビュータであったKate von Roeder氏を追悼して,Damiyaと命名されている。 2.3から依存性注入(DI)を採用して開始されたリファクタリングによるモジュール性の向上は,今回のリリースでも継続されている。その方針によって,Anormデータアクセス層やEbeanといったモジュールが別プロジェクトとして切り出された。また今回のPlayではJava 8が必須となり,ラムダやデフォルトメソッドがJava-APIで使用されている。 依存性注入はこれまでのバージョンでもサポートされていたが,今回からは初期状態で使用可能になるとともに,利用が推奨されるようになった – グローバルステー

    Play 2.4が依存性注入を採用,Java 8に移行
    takkecy
    takkecy 2015/06/22
  • 簡潔なJavaコード

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    簡潔なJavaコード
    takkecy
    takkecy 2015/05/25
  • JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum

    はじめに 先日、私たちが開発しているクラウド型WAFサービス、Scutum(スキュータム)において、予想していなかった箇所の修正によってサーバの負荷が大幅に減るということがありました。原因はこのエントリのタイトルにもあるように、Stringクラスのインスタンスを生成する際の方法にありました。 Stringクラスのコンストラクタとcharset Stringクラスにはいくつかのコンストラクタが用意されています。我々が使っていたのはString(byte[] bytes, String charsetName)です。2つめの引数で、"MS932"や"UTF-8"のような文字集合(以下charset)を明示的に指定するものです。 ScutumのようなWAF(Web Application Firewall)は通常のウェブアプリケーションとは異なり、起動している間にさまざまなcharsetを扱うこ

    JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum
    takkecy
    takkecy 2015/05/07
  • Windows版Vagrant+Chef SoloでCentOS 6.5上にjava7+tomcat7環境を作る | infoScoop開発者ブログ

  • マイクロソフト、Javaで開発されたWebアプリの応答速度、要求数、セッション数、クライアントの分析などさまざまなメトリクスを把握する「Application Insights SDK for Java」発表

    マイクロソフト、Javaで開発されたWebアプリの応答速度、要求数、セッション数、クライアントの分析などさまざまなメトリクスを把握する「Application Insights SDK for Java」発表 マイクロソフトは、.NETアプリケーション対応のWebアプリケーション分析サービス「Visual Studio Application Insights」を、Javaでも利用可能にする「Application Insights SDK for Java」を発表しました。 Application Insightは、Webアプリケーションのパフォーマンスや可用性、ユーザーがどのようにアプリケーションを利用しているのかなど、さまざまなメトリクスを取得し視覚化するサービス。 開発者がWebアプリケーションをデプロイすると、すぐにそのアプリケーションの性能やユーザーの使い勝手などのフィードバッ

    マイクロソフト、Javaで開発されたWebアプリの応答速度、要求数、セッション数、クライアントの分析などさまざまなメトリクスを把握する「Application Insights SDK for Java」発表
    takkecy
    takkecy 2015/03/18
  • Understanding Vert.x Architecture - Part II | CUBRID blog

    Previous blog article covered Vert.x, a Java application framework which provides noticeable performance advantage over competing technologies and features multi programming language support. The previous article has explained us about the philosophy of Vert.x, performance comparison with Node.js, internal structure of Vert.x, and many more. Today, I would like to continue this conversation and ta

    Understanding Vert.x Architecture - Part II | CUBRID blog
  • Java8流インスタンスを生成するメソッドの書き方 - プログラマーの脳みそ

    メソッド内部で任意の型のインスタンスを生成してオブジェクトを返す場合 public static <T> T hoge(Class<T> clazz) { try { return clazz.newInstance(); } catch (ReflectiveOperationException e) { throw new RuntimeException(e); } } といったようにjava.lang.Classを引数にとり、リフレクションでインスタンス生成するというのが常道だった。 対象となるClassにはデフォルトコンストラクタ(引数なしのコンストラクタ)が存在することが前提となる。 呼び出し側は以下のように 型名.class を渡す。 String string = hoge(String.class); これがstataicメソッドではなく、thisオブジェクトが継承による

    Java8流インスタンスを生成するメソッドの書き方 - プログラマーの脳みそ
    takkecy
    takkecy 2015/02/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
    takkecy
    takkecy 2015/02/20
  • 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ

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

    恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
  • モダンアプリケーションのための軽量・高性能プラットフォーム「Vert.x」の概要と導入手順

    対象読者 Javaのフレームワークというと、いまだにStrutsに代表されるServletベースのMVCフレームワークを経験されている方がほとんどだと思います。 Node.jsも経験されている方であれば比較的理解しやすいかもしれませんが、ここでは「伝統的な同期型のマルチスレッドプログラミングになれているJavaプログラマー」を対象とし、Vert.xのアーキテクチャを理解して実際にアプリケーションを作成する手助けになることを目指していきます。 なお、この記事は執筆時点で最新の安定版である2.1.5を前提に記述していきます。 Vert.xのインストール Vert.xは、2012年5月に1.0、2013年に2.0がリリースされ、現在3.0が開発中のまだまだ若く枯れていないオープンソースです。 公式サイトのインストール解説を見てもらえば早いとは思いますが、簡単にインストール手順を説明しておきます。

    モダンアプリケーションのための軽量・高性能プラットフォーム「Vert.x」の概要と導入手順
  • JVMのオススメ起動オプション - oinume journal

    なんか秘伝のタレみたいになってきたので後世のために共有。 前提 Webアプリケーションを想定 TomcatなりJettyなりがListenするポートは外部からはアクセスできない ※-Xms -Xmx -Xmn あたりは搭載しているメモリ容量によって変える、-XX:MaxPermSize -XX:PermSizeは384mあれば十分だと思うけどロードするクラスの数次第なので要調整。 NOW=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms2g -Xmx2g -Xmn1g -XX:MaxPermSize=384m -XX:PermSize=384m \ -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=85 -XX:MaxTenuringThreshold=32 \ Javaプログラマーなら習得しておきたい J

    JVMのオススメ起動オプション - oinume journal
  • 同期コレクションと並列コレクション - A Memorandum

    同期コレクション 同期コレクションのイテレーション 同期コレクションのプット・イフ・アブセント 並列コレクション ConcurrentHashMap CopyOnWriteArrayList CopyOnWriteArraySet 同期コレクション 同期コレクションは、JDK1.2以降で追加された Collections.synchronizedXxx 系のファクトリメソッドから同期ラッパークラスを作成します。 List<String> list = Collections.synchronizedList(new ArrayList<String>()); Set<String> s = Collections.synchronizedSet(new HashSet<String>()); Map<Long, String> m = Collections.synchronizedMap

    同期コレクションと並列コレクション - A Memorandum
  • 第9回 [最終回]HotSpot JVMのGCを選択しよう | gihyo.jp

    HotSpot JVMを使うとき、どのようにGCを設定していますか? 検索して出てきたホームページを見て 「とりあえずこのホームページにあるように最新のGCを指定したし、同じようにオプションを設定したから大丈夫だろ」 と思ってしまう話をよく見聞きします。 図1 誤ったGCの選択 しかし、たとえばバッチのようにスループットを意識すべき処理にもかかわらず、レスポンスタイム重視のGCを選んでしまうのは適切ではありません。 最終回となる今回は、HotSpotにはどのようなGCがあり、どのようにそれらを選択すれば良いのかを紹介します。 4つのGCを使いこなす HotSpot JVMには、以下の4つのGCが実装されています。 シリアルGC パラレルGC コンカレント マーク&スイープGC(CMS) ガベージファーストGC(G1GC) 1つずつ見ていきましょう。 シリアルGC このGCの特徴は、ヒープの

    第9回 [最終回]HotSpot JVMのGCを選択しよう | gihyo.jp
  • マイクロサービスが Scala を選ぶ3つの理由 - Okapies' Archive

    今年も開催される Scala Advent Calendar 2014 の 15 日目にエントリーしていて、ネタとしては先日 Tumblr が発表した "I/O and Microservice library for Scala" を謳う Colossus をやる予定なんだけど、前振りとして「なぜマイクロサービス化を進めるサービスは Scala を選ぶのか」という話をしてみるエントリ。ちなみに、Advent Calendar の前振りと書いたけど、とりあえず Scala をあまり知らない人向け。 そもそもマイクロサービスって何だっけ? マイクロサービスへの移行と Scala なぜ Scala が選ばれるのか? 1. JVM 言語である 2. Finagle の存在 性能 プログラミングモデル 運用ツールとの連携 3. 静的型付き言語である 余談 そもそもマイクロサービスって何だっけ? こ

    マイクロサービスが Scala を選ぶ3つの理由 - Okapies' Archive
  • Vert.xからみたReactive Streams

  • 分かった気になるはじめてのRxJava

    バックアップのリストア検証が可能な AWS Backup Restore testing を使ってみた/AWS Backup Restore testing, which enables backup restore verification

    分かった気になるはじめてのRxJava