You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
ソースコードをコピーアンドペーストで作成したコードクローンの方が信頼性がいいという言説もないことはないですが、多くの場合、コードクローンの存在は我々を土壇場で苦しめることが多いです。 担当者が逃げた、ソースコードを、夜遅くまで修正してリリースしたあとに、実は「コピペで作っているから別の所も全部なおしてテストしてね」とか言われて、作業をやり直すのは、とてもとても悲しいものです。 殆ど同じソースコードを間違い探しのように微妙に変更して、修正していくのは屈辱の極みです。 土壇場において、このような罰ゲームを避けるために、コピペの頻度というものは常時監視しておき、異常な頻度の場合はただちに是正すべきです。 ここでは、コピペの検出を行うツールについて説明します。 PMD-CPD PMDはJavaで実装されたJavaのソースコードの潜在的問題を検出するツールです。 http://pmd.sourcef
今さらですが、Tomcat7から、EL(Expression Language)2.2が利用できるようになりました。 EL2.2になったことで、非常に便利になったのが、オブジェクトのメソッド呼び出しが直接できるようになったことです。 今まで、getterはJavaBeanのプロパティとして、「${obj.name}」のように呼び出せていました。 しかし、任意のメソッドは呼び出すには、今までEL関数(EL Functions)で別途定義したメソッド経由で、「${fn:contains(obj, 'test')}」のように呼び出していました。 特に、マップやリストをオブジェクトとして渡したとき、containsメソッドなど呼び出すのに面倒でした。 EL2.2からは、「${obj.contains('test')}」のようにオブジェクトのメソッドが直接呼び出せるようになり、引数も渡せるようになり
※ 5/29 3:23 追記:なんかモナドになったかも。最下部参照 さて、Java8での拡張をいろいろ見てきたわけですが、ではアプリケーションプログラムでFunctionを受け取るメソッドをがんがん定義するかというとそういうことはあまりなく、フレームワーク的な部分で数個定義する感じになると思います。もちろん数個でも効果はでかいのですが。 また、おそらくStreamを受け取ったり返したりするメソッドを定義することは、めったにないのではないかと思います。 Mapでの拡張も、メソッド内部での処理記述がかわる話で、メソッドの引数や戻り値はMapのまま変わりありません。 Javaでのプログラムの構造というのは、メソッドの引数や戻り値の型がなんであるかで決まると言うことができます。その意味では、lambdaやStreamというのは処理の記述は変わるけどプログラムの構造は変わらないとなります。 けれども
こんばんは、最近はまたフロントよりサーバーメインになってきてるKinokoです。 さっそくですがお題の通り、IntelliJ IDEAで JavaのWebアプリケーションを作成してみます。 Eclipseではググれば大量にそのやり方があるけど、IntelliJ IDEAだと 全然見つからない...。 これからIntelliJでWebアプリ開発をスタートする人のためにも Hello World表示までを残したいと思います。 1 : プロジェクトの作成 Webアプリケーションを作成するために、まず 「JavaEE Web Module」を選択し、Project nameを"helloWorld"と入力。 Project SDK、こちらは事前にインストールしたJava SDKのパスを 指定してあげればOK。 そうするとプロジェクトのひな形が自動で出来上がります。 これはJava EE仕様で定義さ
JavaEEでのWebアプリケーション開発フレームワークと言えばJSFですが、JSFはデスクトップGUIの開発スタイルに似せた、コンポーネントベース、イベントドリブンなフレームワークであるため、拒否反応を示す人も多いようです。 で、フロントコントローラー型のフレームワーク (StrutsやRuby on Railsなど) が必要な人への選択肢をJavaEEは提供していないのか? ということになるのですが、JAX-RSがこの役割に向いているのではないかと言われています。 でも、基本的にRestful Webサービスを開発するためのJAX-RSがHTML Webアプリケーションの開発に本当に使えるのか、疑問に思っている人も多いと思います。 最近JAX-RSを使ってRestful Webサービスのみならず、HTMLを返却するWebアプリケーションの開発にも使ってみる機会があったので、そこで分かっ
DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ...............................................
Struts1の脆弱性問題で、commons-beanutilsに対応が入ったバージョン1.9.2がリリースされました。 https://issues.apache.org/jira/browse/BEANUTILS-463 といっても、デフォルトで問題が修正されるわけではなく、セットアップは必要です。 仕組み BeanIntrospectorという仕組みが1.9.xからは導入されていて、PropertyUtilsにこのBeanIntrospectorを追加すると、オブジェクトのどのメソッドをプロパティとして扱うかの挙動を変えることができるようになっています。 使い方はテストコードがあるので、そちらを見てみます。 String[] properties = { "test", "other", "oneMore" }; SuppressPropertiesBeanIntrospector
Javaのベンダー公式フレームワークであるJava EEでは、DI(Dependency Injection)の仕様である CDI(Context and Dependency Injection for Java EE)が提供されています。 CDIはJava EEでアプリケーションを開発する上で避けては通れませんが、それ自体が複雑なのに加え、 仕様が複数にまたがっていて理解するのが難しいです。 そのため、CDI使う上で理解する必要のある重要な概念や基本的な使い方、 はまりポイントなどをまとめていきます。 この記事は基本的な使い方、概念についての解説なので、CDIや周辺仕様を全て網羅していません。その点はご了承ください。 なお、本記事で使用するのは、最新のCDI1.2ではなく、Java EE7の一部であるCDI1.1になります。 また、Spring, Seasar2などの経験があることを前
ある人(誰)から、Windows Server 2008でタイムゾーン関連のバグがあるという話を聞いた。発生するのが「J2SDK 1.4.2_14 b01以前」ということでえらい昔の話なのだが、ニッチな問題が好きな自分としては実際に動かして確認しないわけにはいかない(謎)ということで、試してみた。 発生するバージョンから、「J2SDK 1.4.2_14リリースでは修正済み」、「J2SDK 1.4.2_13リリースでは未修正」ということで、一応リリースノートを確認し、これら2つのバージョンで次のプログラムを実行してみた。 環境は、Windows Server 2008で起こる問題はWindows Vistaでも起こるだろう、ということでいつもの(謎)Windows Vista Businessを使用。 import java.util.Date; import java.util.Local
JJUG CCC 2014 Spring の発表資料です。
まもなく Java SE 8 がリリースされ、新APIの目玉の一つである "Date and Time API" に関する記事が増えてきたように思えます。直近ではアリエル・ネットワークさんのブログ「Java8の日付および時刻処理(Date/Time API(JSR-310))の紹介と利用指針」が公開されましたが、正直な話、JSR 310 の仕様書やその原点である ISO 8601 の規格書を読み込んで入れば、ああいう適当なことは書けないよね?というのが所感です。これはその他の Date and Time API を取り上げた記事すべてに言えることですが、「利用指針」と上から目線とも取れる表現が使われていたため、特に気になった次第です。 そもそも、従来の java.util.Date/java.util.Calendar と Date and Time API がどう違うかというと、元となっ
何回かに分けてJ2EEレガシーアプリケーションのJavaEEアプリケーションへのマイグレーションについて実際のコードを見ながら解説したいと思います。 変更前のサンプルソースはこちら https://github.com/megascus/oi-webapp-sample/tree/initial こちらのソースは、Tomcat上で動く、ビューがServlet2.5+JSP、O/RマッパーとしてHibernateを直接使用するという、大体2005年ぐらいに作られたシステムのイメージになっています。 また、いくつかの点にてきちんと設計されているとは言えず、MVCに沿って作られたことになっていますが、きちんとViewとModelが分離できていません。 それ以外にも問題をいくつか抱えています。 これをGlassFish4.0上でのJavaEE7仕様で作り直したいと思います。 古いシステムを新しい仕
MacOSX 10.9.2 (Mavericks)にて、Eclipse 4.3 (Kepler)を起動させようとすると、Java SE6のインストールを求められてしまう。 "Eclipse.app"を開くには、Java SE6ランタイムが必要です。今すぐインストールしますか? しかしながら、既にJava SE7 update55をインストール済みなのだ。 $ /usr/libexec/java_home -V Matching Java Virtual Machines (1): 1.7.0_55, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
はじめに 筆者は10年以上ウェブアプリケーション開発を主な業務とするJavaプログラマであったにも関わらず、Strutsについてはこれまでずっと食わず嫌いでした。初期のStrutsは「XMLだらけで効率が悪そう」というイメージが強かったためです。最近はRuby on Rails等の影響を受けCoC(convention over configuration)を採り入れ、XML地獄もだいぶ解消したようです。 StrutsはJavaアプリケーションらしくない種類(任意のコード実行等)の脆弱性を連発することでも知られており、最近は我々の提供するSaaS型WAFサービス、Scutum(スキュータム)のお客様からも頻繁にStrutsについての問い合わせを受けるようになりました。また、去年見つかった任意のコード実行の脆弱性では、脆弱性の公表後すぐにPoCが出回り実際に攻撃が発生するなど、悪い意味で注目
2014-04-11 Java EE 7を勉強する方法 Java Java EE 「Java EE 7を勉強したいけど、日本語情報が少なくて、どうしたらいいか分からない」という方は多いのではないでしょうか。少なくとも、僕はそうでした。 有名な技術者の方々が、はてなやGitHubにご自分で検証された結果をブログに書かれています。 僕もJava EE 7の研修を開発する際に、色々なブログ情報を参考にしました。こういったブログは非常に有益な情報です。しかし、個々の技術にフォーカスされたものが多く、技術の全体像を把握することは難しいです。 Java EE 7の技術全体を説明してくれている文書は無いものか…とネットを色々と検索していたときに、Java EE 7のチュートリアルの存在を知りました。 The Java EE 7 Tutorial:The Java EE 7 Tutorial:Prefac
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く