Shortener and Japanese translation version of http://www.slideshare.net/YujiKubota/jdk9-features-31jul2015-jjug .
クライアントアプリにとって、マルチスレッドプログラミングは避けては通れない重要な概念です。しかし、気をつけないとハマるポイントも多く、初めてクライアントアプリを学ぶ人たちからすると、複雑で難解な取っつきづらいものでもあります。ここでは、スレッドの基本から、効率的な使い方、また複雑化しやすいポイントをシンプルに実装するためのノウハウを見ていきます。 TL;DR スレッドの取り扱い方を知る Threadをそのまま使わず、AsyncTaskやIntentService、時にThreadPoolExecutorを使ってスレッドの使い方を効率化する。 複雑な処理フローをシンプルに扱うためのフレームワークを導入する PromiseやRxAndroidなどで、複雑化しやすいポイントを整理する。 スレッドの基本 スレッドといえば、ThreadクラスやRunnableクラスがベースにあります。以下のようにす
Code Listings Written by Brian Goetz and Tim Peierls with assistance from members of JCP JSR-166 Expert Group and released to the public domain, as explained at http://creativecommons.org/licenses/publicdomain Introduction 1.1 Non-thread-safe sequence generator. 1.2 Thread-safe sequence generator. Thread Safety 2.1 A stateless servlet. 2.2 Servlet that counts requests without the necessary synchro
Java Concurrency in Practice "I was fortunate indeed to have worked with a fantastic team on the design and implementation of the concurrency features added to the Java platform in Java 5.0 and Java 6. Now this same team provides the best explanation yet of these new features, and of concurrency in general. Concurrency is no longer a subject for advanced users only. Every Java developer should rea
こんにちは。 ようやくKinesisSpoutが一段楽したので次のネタを。 先日「データ転送ミドルウェア勉強会」が開催され、 そこでバルクデータロードツール『Embulk』が公開されました。 データのバルクロードというと、定番のOSSというのがなくて、 HDFSにバルクデータをロードする時はhadoopコマンドで行う・・などを行っていたのですが、 それがツールでできるというのは非常にありがたいですね。 で、既に使ってみた方の事例はいくつか挙がっていますので、実際にどう作られているかを見てみようと思います。 ・・・ええ、Javaでプラグインが書けるようになるまで実際に動かすかソース読むしか出来ないからですね。 1.embulkのモジュール構成 embulkのGitHubを確認してみますと、下記3つのモジュールで構成されています。 embulk-cli embulk-core embulk-s
こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、
前回 はセミコロンレスJavaで再帰ができる事が分かりました。 ただし再帰しすぎるとスタックオーバーフローでしにます。 再帰による 1 + 2 + ... + n を見てみましょう。 public class SemicolonlessRecursion { public static void main(String[] args) { if (java.util.stream.Stream .of(Integer.parseInt(args[0])) .flatMap(n -> java.util.stream.Stream .<F<Integer, Integer>> of((f, m) -> m < 1 ? 0 : m + f.apply(f, m - 1)) .map(sum -> sum.apply(sum, n))) .peek(System.out::println) .c
前置き:このエントリはJavaおよびJava周辺の*1開発環境に全く縁の無い人間が、可能な限り依存ソフトウェアを少なく手順をシンプルに保ったままやろうとしたものであり、知識・経験のある人にとっては全く最適な手段でなかろうことをお断りします。 先日のエントリ で書いたとおり woothee 1.0.0 をリリースした。Perl, Ruby, Node.js および PHP などはそれぞれの言語毎のモジュールリポジトリに登録されている。 が、Javaについては自分が Maven Central の勝手がわからず、されてると便利だよなーとは思いつつ放置していた。 が、なんと @making さんからMaven Central登録用の pull requestがきた 。きてしまった。これで最大の問題(xmlを書く)はおおむね解決されてしまったので、覚悟を決めて登録作業をすることにした。 せっかくや
背景Java8にて、インターフェースにdefaultメソッド(メソッド定義と実装)を定義できるようになりました。 しかし、その実装においてObjectクラスが持っているメソッド(toString()とかequals()とか)は、インターフェース内でdefault実装として定義できないようになっています。(コンパイルエラー「A default method cannot override a method from java.lang.Object」) 「なんでかなぁ~」と思ってちょっと調べてみたら、以下の記事を見つけました。 ちょっと要約ちょっと要約してみます。 #自分の解釈を一部入れています。 #英語に不自由のない方は上記を見てもらえればいいかと思います。 (質問者) defaultメソッドは、Javaの中で新しい良いツールだ。 しかし、私がインターフェースにtoString()のdef
このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日本のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年5月時点の調査。
※ 本ページは、Gradle - Documentationを翻訳したものです。 Gradleプロジェクトは、ドキュメントの品質を高めるよう日々努めています。 ドキュメント自身、Gradleによりビルドされており、すべてのコードスニペットおよびサンプルは、Gradleのコードベースが変更されるたびに自動的にテストされ、常に正しく保たれると同時に最新版の内容が反映されるようになっています。 ユーザーガイド ユーザーガイド (分割版HTML、1ページ統合版HTML、PDF)では、Gradleのコンセプト、機能、コアプラグインについて詳細に記述されています。 チュートリアルで基本的なタスクの動作を体験したり、インストール方法を知ることもできます。 もちろん、オライリーのGradleシリーズも忘れずにチェックしてください。 リファレンス資料 リファレンスとして最初に参照するべきドキュメントは、DS
CentOS 5.9 64bit maven 3.1.0 Java 1.7.0_05 mavenのインストール方法は以下を参照 ※http://kakakikikeke.blogspot.jp/2013/10/maven.html mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app -DartifactId=my-app 通常のJavaプロジェクトを作成する場合のパラメータです archetypeGroupIdは後述にもありますが、mavenで用意されたテンプレートみたいなものを設定します(独自で作成することも可能) groupIdはいわゆるパッケージ名です artifactIdはいわゆるプロジェクト名です コマンド実行時に入力が必須の部分もあるの
仕事でHudsonを導入したいと思っているのですが、Meven2と組み合わせた方がいろいろできるらしいので、Maven2について調べてみました。 半日くらいさわった後でのMaven2の印象 いまどきコマンドラインベース Eclipseとそんなに相性が良くない(Eclipseのプラグインが微妙) Antと比べて挙動が見えない XMLの記述量が多い 用語が多い 最初の壁を越えると意外と簡単 継続的インテグレーションをやる場合、Antより楽そうに思える 嫌でも開発プロセスが確立される Mavenは1の頃にさわってみて、Antに逃げ帰った思い出があるので、そもそも悪い印象が多いのですが、そこは我慢してHudsonを使った運用を確立させるために頑張ってみます。 pom.xml まずこのxmlが問題なわけです。 Mavenサイトに全体の構成が載っていますが、まずこれで使うのを止めたくなるわけです。 も
直列化/整列化とは [/2007-12-07] シリアライズの実装方法 [/2007-06-13] シリアライズの実行方法 [2007-05-02] serialVersionUID [/2020-03-21] シリアライズの対象/非対象フィールド [/2007-06-11] シリアライズ方法の独自定義 [/2010-04-29] Externalizable [2010-04-28] シリアライズできないクラス シリアライズのあるべき姿(?) [/2008-07-05] @Serial [2020-03-21] 直列化とは Javaの説明(Javadocとか)を見ていると、よく「直列化」「直列化可能」「直列化された形式」という言葉に遭遇する。 これはserializeの訳語みたいだけど、なんだか意味不明…。 VC++でシリアライズと言えば、「ファイルへのデータ保存」「ファイルからのデータ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く