久しぶりにジェネリクスを多用するライブラリを作成していて、忘れていたことやはまりどころがあったので、今更ですが備忘録的にポイントをまとめておきます。 用語 ジェネリクスは似たような用語があって混乱しやすいので、まずは用語をきちんと抑えておく。 以下は、Effective Javaの項目23からの抜粋である。 用語 例
久しぶりにジェネリクスを多用するライブラリを作成していて、忘れていたことやはまりどころがあったので、今更ですが備忘録的にポイントをまとめておきます。 用語 ジェネリクスは似たような用語があって混乱しやすいので、まずは用語をきちんと抑えておく。 以下は、Effective Javaの項目23からの抜粋である。 用語 例
9月の頭くらいに、Javaのリリースモデルが6ヶ月ごとの短期リリースになるということが発表されてました。 で、「へぇ〜」みたいな感じで見てたのですけど、JavaOneでの話を聞くと、これ結構大変なのかも、ということになってそうなので、ちょっとまとめてみます。 追記:2018年05月の状況をQiitaでまとめています。 [Javaのサポートについてのまとめ2018 - Qiita](https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb) Javaの新しいリリースモデル 公式情報はこちらにまとめられています。(10/4にアップデートされてます) http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html ざっくり言えば、6ヶ月ごとに機能リリースを行い、3ヶ月ごとにメンテナンス/セキ
[速報]Java 9が正式リリース、Javaをモジュール化するProject Jigsawがついに実現。今後のJavaは6カ月ごとタイムベースのアップデートへ 米オラクルは9月21日(日本時間9月22日未明)、Javaの最新バージョンとなるJava 9正式版を公開しました。 Java 9 is Out!!!!#JDK9 #Java9 #Javahttps://t.co/VE7BI4KPlK pic.twitter.com/kOdNiLJ1ky — Java (@java) 2017年9月21日 Java 9最大の新機能は「Project Jigsaw」として開発されたJavaのモジュール化機能です。おそらくJavaの開発のなかでももっとも難産なプロジェクトだったといえるでしょう。 難産の末にProject Jigsawがついに実現 Javaをモジュール化して必要な部分だけを使えるようにする
はじめに 筆者は10年以上ウェブアプリケーション開発を主な業務とするJavaプログラマであったにも関わらず、Strutsについてはこれまでずっと食わず嫌いでした。初期のStrutsは「XMLだらけで効率が悪そう」というイメージが強かったためです。最近はRuby on Rails等の影響を受けCoC(convention over configuration)を採り入れ、XML地獄もだいぶ解消したようです。 StrutsはJavaアプリケーションらしくない種類(任意のコード実行等)の脆弱性を連発することでも知られており、最近は我々の提供するSaaS型WAFサービス、Scutum(スキュータム)のお客様からも頻繁にStrutsについての問い合わせを受けるようになりました。また、去年見つかった任意のコード実行の脆弱性では、脆弱性の公表後すぐにPoCが出回り実際に攻撃が発生するなど、悪い意味で注目
1. 概要 本ページは、「Apache Struts(脚注1)」の脆弱性対策情報をまとめたものです。 「Apache Struts」はウェブアプリケーションを開発するためのソフトウェアフレームワークで、Apache Software Foundation(以降、ASF)から提供されています。日本国内ではウェブサイト構築に大変多く利用されており、その結果、「Apache Struts」で構築されたウェブサイトは相当数存在すると考えられます。 ウェブサイトはインターネット上に一旦公開すると24時間365日いつでもどこからでもアクセスが可能です。 そのため、ウェブサイトに脆弱性が存在した場合、それを放置すると、情報漏えい等の被害を受けるおそれもあります。こうした事態を避けるため、ASFより「Apache Struts」の修正パッチが公開された際には、速やかに修正パッチを適用する必要があります。
会社で上司から「お前Java書けるんだよな?」と聞かれると必ず「書けます」と回答します。 しかしその後心の中で付け加えます。(ただしすごい古いバージョンのJavaだけれど・・・) 自分が大学で勉強していた当時のJavaのバージョンはJ2SE 5.0。 Javaの勉強を始めたばかりのころ、1.4からバージョンアップしたため、自分は「Java1.5」と呼んでいたはずです。 しかしあれから10年以上経ち、いつの間にか最新版はJava SE 8になっていました。さらに来年にはJava SE 9がリリースされると聞きます。 30億デバイスで動作するJavaは後方互換性がウリです(と同時に批判される特徴でもあります)。 過去のバージョンで書かれたソースコードが最新のJavaでも動作します。 ただし、『書かれたコードが動作する』と『そのように実装されることが推奨される』は別の話です。 また、Javaもそ
EmbeddedDriverはderby.jarに入っていてClientDriverはderbyclient.jarに入っている。 組み込み環境で使用する場合はderby.jarだけあれば良いが、クライアント/サーバー環境で使用する場合はderby.jarとderbyclient.jarの両方が必要。 →クライアント/サーバー環境用のJavaDBの起動方法 JavaDBの作成・接続 JavaDBは、接続時にJavaDBの場所を指定する。 このとき、「create=true」というオプションを付けていれば、DBが存在しない場合に自動的に最低限必要なテーブル・データが作成される。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public static void
はじめての Java Persistence API 2011年12月19日 at 2:03 午後 2件のコメント 今日は、Java Advent カレンダーの一貫で 12/19 分のエントリを記載します。昨日のなぎせさんに続き掲載します。また明日は私の盟友である岡崎さんです。 先日、なぎせさんより、「ProxyパターンとProxyクラスと黒魔術」と題してSQL の事を取り上げていただきました。また私自身、先日岡山のイベントで JPA について登壇したばかりなので、今日は DB つながりということで JPA (Java Persistence API) について岡山の資料を利用しながらご紹介します。 岡山の発表資料の全部はこちらです。 Java でデータベース (DB) 接続をする際、Java で一番最初に DB 接続をサポートした事から、ながく JDBC が利用されてきました。その後、J
IBM、自社のJavaVMをオープンソース化すると発表。COBOLやPL/IのランタイムをJavaVMにも。Java 9と同時に正式版リリースを予定。JavaOne 2016 IBMは、これまで自社で開発してきたJavaVMをオープンソース化すると、サンフランシスコで開催されていたJavaOne 2016で発表しました。 JavaOne 2016の3日目の基調講演に登壇した同社Distinguished Engineer兼Java CTOのJohn Duimovich氏は、冒頭で聴衆に「With Community」(コミュニティとともに)と呼びかけたあと「Make Java Great Again」(Javaを再び素晴らしいものにしよう)と書かれたキャップをかぶって見せました。 これはIBMが、コミュニティと一緒にJavaを進化させていくのだという心意気を示したメッセージのように受け止め
こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C
NullPointerException 嫌いですよね!そんなときに頼りになるのが Java 8 から導入された Optional です。 でも、 null の代わりに Optional を積極的に使うとコードが Optional だらけになり、特に次のような場合に面倒くさいです。 Optional<Integer> a があるとき、 a の値を二乗したい。ただし、 a が empty の場合は empty を得たい。 Optional<Double> a があるとき、 a の平方根を計算したい。ただし、 a が empty または負の数の場合は empty を得たい。なお、 Math.sqrt を安全にした(負の数を渡すと empty を返す)関数 Optional<Double> safeSqrt(double) があるものとして考えて良い。 Optional<Integer> a と
ITProの連載、Java技術最前線 | 日経 xTECH(クロステック)などで有名なJava Championの櫻庭さん(@skrbさん)からご著書、「現場で使える 最新 Java SE 7/8 速攻入門」を献本いただきました。 現場で使える[最新]Java SE 7/8 速攻入門 作者: 櫻庭祐一出版社/メーカー: 技術評論社発売日: 2015/11/19メディア: 大型本この商品を含むブログ (1件) を見る 感想 この本は、Javaを普段使っている、もしくはJavaの基本は理解している人に向けた本だと思います。 そういった方で、Java SE 7/8を勉強したことが無い人は是非手に取ることをお勧めします。 特に、Javaの基本について書いた本ではJava SE 7や8の部分は少ししか触れられていないので、そういった書籍で勉強したばっかりの人にとっては絶対に読んでおきたい一冊です。
JVNVU#94276522 Apache Commons Collections ライブラリのデシリアライズ処理に脆弱性 Apache Commons Collections (ACC) ライブラリのデシリアライズ処理には脆弱性があります。Java アプリケーションが ACC ライブラリを直接使用している場合やクラスパス指定でアクセスできる範囲に ACC ライブラリが設置されている場合、任意のコードを実行させられる可能性があります。 Apache Commons Collections ライブラリを直接使用している Java アプリケーション クラスパス指定でアクセスできる範囲に Apache Commons Collections ライブラリを設置している Java アプリケーション 信頼できないデータのデシリアライズ (CWE-502) 2015年1月に開催された AppSec Ca
今日は青山の日本オラクルさんで行われたJavaOne 2015報告会へ行ってきました(^^) jjug.doorkeeper.jp 毎年、同じこと書いてる気がしますが…2012年のJavaOne報告会へ参加したことがきっかけで、その後コミュニティの勉強会などに参加するようになりました。 あれに参加してなかったら、会社という狭い狭い世界でのみ生きるエンジニアになってた気がします。 kikutaro777.hatenablog.com 今年のJavaOneはJava生誕20周年のお祝いで、そういった面では盛り上がったようですが、技術的な面ではあまり驚くものはなかった印象でした(^^; 個人的には@sugarlifeさんのJigsawの話が一番興味深く、具体的な例が多かったので勉強になりました。モジュールかぁ。 あ、jshellも面白そうでした。Java SEは9が来年出る予定なだけに、色々楽し
「大きく進化したJava SE 8は企業に多くのメリットをもたらす。プロジェクト・マネジャーやアーキテクトも、今すぐ移行に取り掛かるべき」と訴えるJavaエバンジェリストの寺田佳央氏。ラムダ式とストリームAPIを例にとり、Java SE 8によるプログラミングの特徴と利点を語った。 2014年3月にリリースされた「Java SE 8」の大きな変更点の1つは、新たな言語機能として「ラムダ式(Lambda Expressions)」が導入されたことだ。同機能を使うことで、開発者は従来よりも効率的にプログラムを書けるようになる。また、併せて導入された「ストリームAPI(Stream API)」を使用することで並列処理の実装が容易となり、マルチコア・プロセッサの能力を生かしたハイパフォーマンスなアプリケーションを迅速に作れるようになる。 日本オラクルのJavaエバンジェリスト 寺田佳央氏は、企業の
今回も前回の記事につづき、Java8による変更点で未だあまり紹介されていないポイントを記事にしようと思う。 今回はJava8のHotSpotVMの話。Java8ではJEP122が取り込まれ、VMのメモリモデルが変更された。JEP122のタイトル「Remove the Permanent Generation」から想像できるとおり、Java8のHotSpotVMからは従来のPermanent領域が無くなった。 なぜ、こういった変更が行われたのだろうか?また、元々Permanent領域に格納されていた情報は何処にいってしまったのか?JVM付属のツールにどういった影響があるのか? 今回の記事ではこの点をまとめていこうと思う。 なお、HotSpotVMのメモリモデルについて詳しくない方は、先にこちらの項番(「補足 – HotSpotVMのメモリ構造概説)を読んでいただくとスムーズに読み進められるだ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く