1. 【JJUG CCC 2014 Spring H-‐2】 Javaトラブルに備えよう 日本Javaユーザグループ 上妻 宜人 (あげつま のりと) はてなブログ : n-agetsuma.hatenablog.com 2. 自己紹介 上妻 宜人 (あげつま のりと) n 電話の裏側を作っている会社で働いています n Java/APサーバの社内技術サポート、トラブル解析 n Blog 『見習いプログラミング日記』 【JJUG CCC 2014 Spring H-‐2】
Javaプログラマのみなさんは、Javaは型推論がないから変数の型指定をしなくていけなくてダサい、などとイジメられた経験があると思います。 おかあさんに型推論をねだるとGroovyをわたされたり、おとうさんに型推論をねだるとScalaがやってきたり、プレステが欲しいって言ったのにWiiやXboxを買い渡される感を味わった人も多いのではないでしょうか。 そんな良い子のJavaプログラマのために、今年はサンタが素敵なプレゼントを持ってきてくれましたよ。 同じ型を書くのがダサい たとえばウィンドウを出してボタンを押したらメッセージが表示されるサンプルを書くとこんな感じになりますね。 public static void main(String... args){ JFrame f = new JFrame("テスト"); JButton b = new JButton("押して"); JText
最近Dropwizardというフレームワークが海外のJavaおよびJVMベース言語界隈で流行り始めている感しがします。 Thought Works Technology Reader でも Traialに入ってきています。 http://dropwizard.codahale.com/ このフレームワークはYammerのバックエンドWebサービスを提供するために作られたフレームワークで、アプリケーション開発者からみると、 JaxRSベースのREST提供フレームワーク ORM Jettyベースの組み込みWebサーバ Metricsを収集するためのライブラリ、管理ツール等 といった機能があります。 ここらへんまでは普通のフレームワークと基本的には違いが無く、むしろWebサービスに特化しているため物足りなく感じるのですが、特筆すべきは、このフレームワークが推奨するデプロイ・運用方法にあります。
カリフォルニア州エルセガンドに本拠をおくカスタムアプリケーション開発会社のTechEmpowerが,"Java 8のすべて(Everything about Java 8)" と題するブログ記事を公開している。まもなく来るJava 8において,開発者が直面する変更点を包括的にとりまとめたものだ。ここではその記事の概要を紹介する。詳細な内容についてはTechEmpowerのブログ記事を参照してほしい。 インターフェースの改善 インターフェースでstaticメソッドが定義できるようになった。例えばjava.util.Comparatorには,次のようにstaticなneutralOrderメソッドが追加されている。 public static <T extends Comparable<? super T>> Comparator<T> naturalOrder() { return (Com
セキュリティ専門家は「JRE6のパッチは存在しない。アンインストールするか、JRE7 Update 25に更新を」と呼び掛けた。 さまざまな脆弱性の悪用を狙った攻撃ツールの「Neutrino」に、Javaの既知の脆弱性を悪用する機能が加わった。Java 6ではこの脆弱性が修正されていないことから、セキュリティ各社は改めて、最新版のJava 7にアップグレードするよう促している。 セキュリティ企業F-Secureの研究者は8月26日、TwitterでJavaの脆弱性(CVE-2013-2463)を突くコンセプト実証コードが公開され、Neutrinoにこの脆弱性を突くコードが実装されたと報告した。「JRE6のパッチは存在しない。アンインストールするか、JRE7 Update 25に更新を」と呼び掛けた。 CVE-2013-2463は、Oracleが6月の定例パッチで修正した脆弱性で、危険度は極
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
ITproの読者には既にご存じの方も多いと思うが、2014年3月に「Java SE」の次期版「Java SE 8」(以下、Java 8)がリリース予定である。国内のエンタープライズ分野では「レガシーJava」が多いとされ、現行版の「Java SE 7」に移行しているユーザーすら少数派と聞く。Java 8といっても遠い話のように感じる方も多いかもしれない。 しかし、Java 8はJavaにとって一つの大きなマイルストーンとなる。関数型プログラミングに由来する「ラムダ(lambda)式」なる構文が導入されるのだ。 Javaをよく知る技術者の方の中には、「いや、Java 8のラムダ式は関数型プログラミングのために導入されたのではない」と主張される方がいるだろう。この点については後ほど触れたいと思うが、「ラムダ式が何のために導入されたか」はさておき、ラムダ式という記法そのものが「関数型に由来する」
エンジニア採用をテーマにして3回くらいのシリーズで記事を書くことになり、今回はその第1回。 エンジニア経験のない人事の人がやりがちな、エンジニアに馬鹿にされる求人を作ってしまわないためのアドバイスをつらつらと書いていきます。 さて、タイトルにあるような「応募資格:JAVA業務経験2年以上」といった求人票はエンジニアの方なら一度は目にしたことがあると思います。 この手の求人を見るたびに、「本気で採用する気があるんだろうか?」と他人事ながら心配してしまうわけですが、おそらく書いた採用担当者は真面目に自分の仕事をこなしているつもりなのでしょう。 しかしまともなエンジニアが見れば、この短い文章からその会社のイケてなさ加減を感じ取り、その会社を事前に知っていて好印象を持っていたとかでなければ、即座にページを閉じて読み飛ばすこと請け合いです。 それはなぜか? ダメな点のまず第一は、「その会社が技術
2014 2013 セキュアコーディングを学ぶための教材として活用していただくことを目的として、Java 言語で書かれたアプリケーションの脆弱性事例に関する解説資料を公開しています。 セキュアな Java アプリケーションの開発を目指すには、すでに知られている脆弱性の具体例を理解し、それを反面教師として同じ失敗を繰り返さないようにすることが重要です。 Java言語によるセキュアなプログラムを開発するためのコーディング規約「Java セキュアコーディングスタンダード CERT/Oracle版」や、Javaセキュアコーディングセミナー資料とともに、本資料を自習や勉強会などの参考資料としてご活用ください。 2014 公開日 タイトル PDF PGP 署名
The Eclipse Foundationは6月26日(カナダ時間)、オープンソースの統合開発環境(IDE)Eclipseの最新版「Eclipse 4.3」(開発コード「Kepler」)をリリースした。Java EE 7サポートなど、さまざまな強化が加わっている。 EclipseはJavaで実装されたIDEで、JavaをはじめC/C++やPHP、HTML、JavaScriptなどさまざまな言語での開発をサポートする。元々は米IBMで開発されていたが、現在は非営利団体The Eclipse Foundationの下でオープンソースプロジェクトとして開発されており、毎年6月の新版リリースが計画されている。前バージョン(Eclipse 4.2)は2012年6月に公開された「Juno」。最新版は71のオープンソースチームが加わり、54の企業や組織から420人以上の開発者が開発に参加したと報告して
Java8でのラムダの使い方などを説明してきたのですが、構文拡張自体には触れていなかったので、改めてここで簡単に説明しておこうと思います。 まずは、Java8で実際に最もインパクトがある言語拡張、インタフェースのデフォルトメソッドです。 デフォルトメソッドとデフォルト実装 いままでインタフェースには実装をもつことができませんでしたが、Java 8からはインタフェースが実装をもてるようになります。 実装をもつメソッドを定義するときには、キーワードdefaultをメソッドの前につけます。 interface Foo{ void print(String s); default void twice(String s){ print(s); print(s); } } twiceメソッドが実装をもっています。この実装をデフォルト実装といいます。 デフォルトメソッドを実装するクラスで、デフォルトメ
Java8のlambda構文の話を書くと、旧来の書き方でいいというコメントがつくのですが、それでも便利になったMapの恩恵を受けることは多いんじゃないかと思います。 ※ 2018/5/31 Java9からはメモ化再帰には使えなくなっています ※ 2019/2/15 なんか問題ない? Mapには、lambda式を使ったメソッドが多く追加されていますが、たとえばgetOrDefaultメソッドのようなlambda式を使わないメソッドも追加されていて、これも便利です。 そして、このようなlambda式を使わないメソッドも、間接的にはlambda構文サポートでの言語拡張のおかげです。 Mapはインタフェースなので、Java7までの構文でメソッドを追加しようとすると、Mapを実装しているすべてのクラスに新しいメソッドの実装を追加する必要がありました。そしてそれは現実的に不可能なので、今までMapなど
2013年5月14日 at 7:47 午後 6件のコメント 2013 年 5 月 14 日、日本オラクルより新しい発表を行います。本日 5 月 14 日に日本語版 Java SE API ドキュメントを正式公開しました。 「Java Platform, Standard Edition 7」の最新情報を記載したドキュメント類の日本語版を本日公開しました。 公開先URL:http://www.oracle.com/technetwork/jp/java/javase/documentation/ ・本日公開した「Java Platform, Standard Edition 7」の最新ドキュメントは、2011年7月に提供開始した「Java Platform, Standard Edition 7 (Java SE 7)」が提供する機能紹介、コンポーネント一覧を記載した参照資料です。Java開
<noscript> <div>JavaScript がブラウザで無効になっています。</div> </noscript> <h2>フレーム関連の警告</h2> <p>このドキュメントはフレーム機能を使って表示するように作られています。フレームを表示できない Web クライアントの場合にこのメッセージが表示されます。<a href="overview-summary.html">フレームなしバージョン</a>へのリンク。</p>
文字集合自体は抽象的な「文字の集まり」に過ぎないので単独で問題になることはないが,異なる文字集合に変換する際には問題が発生する場合がある。文字集合が異なるということは,対応する文字が1対1対応していないので,変換先の文字集合で対応する文字がないケースや,多対1の対応が発生する可能性がある。 図1に,Unicodeからマイクロソフト標準キャラクタセットに変換する場合を例示した。マイクロソフト標準キャラクタセットには「骶」(尾てい骨の“てい”)や,ハングルなどはない。また,バックスラッシュ「\」(U+005C)と円記号「\」(U+00A5)がともにJIS X 0201の「\」(0x5C)に変換される場合について示している。 「漢」のように1対1対応している文字は問題ない。ハングルや「骶」のように対応するコードポイントがない場合はエラーになるか文字化けする。インターネットで「尾 骨 びていこつ」
Javaでサーバアプリケーションを開発している場合に遭遇する問題に「Out Of Memory」がある。Javaアプリケーションが使用するメモリが増え続け、最終的に許容範囲を超えてJava仮想マシンがクラッシュする。この問題に対するもっとも簡単な対処方法は、物理的にメモリの容量を増やしてJava仮想マシンが利用できるメモリ容量を引き上げること、もうひとつは、クラッシュする前に定期的にアプリケーションを再起動することだ。強引な方法だが、実効性のある方法でもある。しかし、根本的に原因を解決することにはならず、何らかの原因でいつかOut of Memoryが発生する危険性が存在しつづけることになる。 根本的に問題を解決したい場合には、どの部分でメモリリークが発生しているかを追跡し、対象部分のコードを書き換える必要がある。そうした場合に参考になる記事が「Fix Memory Leaks in Ja
さて、Java8で関数型っぽいことをやって遊んでみたわけですが、実際はそんな書き方しませんよね。 Java8で実際に使うのは、Streamです。 ということで、Streamの使い方をひととおり見てみます。 ※5/17 仕様変更があったので、修正しました 基本 まずは、Iterableインタフェースに用意されたforEachメソッドを見てみましょう。 List<String> names = Arrays.asList("hoge hoge", "foo bar", "naoki", "kishida"); names.forEach(s -> System.out.println(s)); これで次のように表示されます。 hoge hoge foo bar naoki kishida いままでの拡張forだと次のように書いてました List<String> names = Arrays.a
この問題は、4月16日に公開されたJava最新版の「Java 7 Update 21」(1.7.0_21)も影響を受けるという。 ポーランドのセキュリティ企業Security Explorationsは4月22日、米OracleのJava SEにまた新たなセキュリティ問題が見つかったとして、セキュリティメーリングリストの「Full Disclosure」で概略を公表した。 Security Explorationsによれば、新たに見つかった脆弱性はJavaのリフレクションAPIに関連するもので、4月16日に公開されたJava最新版の「Java 7 Update 21」(1.7.0_21)も影響を受けるという。この問題を悪用すれば、Javaのセキュリティ対策であるサンドボックスを完全に迂回することが可能だとしている。 この問題はJREプラグインやJDKソフトウェアだけでなく、最近発表されたサ
Discover cutting-edge IT insights from Europe's largest tech editorial team. Explore curated breaking news and expert opinions for tech enthusiasts and pros. Don't miss any news – follow us on Facebook, LinkedIn or Mastodon. Statements from the company Masimo suggest that the consumer division with brands such as Bowers & Wilkins could be discontinued at the beginning of 2025.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く