タグ

Javaとjavaに関するzetta1985のブックマーク (38)

  • JEP 305: Pattern Matching for instanceof (Preview)

    Summary Enhance the Java programming language with pattern matching for the instanceof operator. Pattern matching allows common logic in a program, namely the conditional extraction of components from objects, to be expressed more concisely and safely. This is a preview language feature in JDK 14. Motivation Nearly every program includes some sort of logic that combines testing if an expression ha

  • Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ

    元ネタはこちらですが、「優れたJavaプログラマ」を見分ける質問ではありません*1。次のような状況を想定してください。 受託業務を中心にしている弊社は、Javaで業務系ウェブアプリケーションの開発を行う事になりました。しかし社内のリソースを使うにも1−2名足らない事が見積もりから解っています。そこで、中堅エンジニアを1−2名募集することになりました。正社員か派遣かは問いませんが、経験が3年程度の中堅プログラマが必要です。同等またはそれ以上のスキルを持つ正社員がプロジェクトを牽引しますが、ゼロから教えながら教育することはできないので、必要最低限のスキルを持っていることが条件になります。 こんな状況を想定して、面接の質問を考えてみました。経験が3年程度あれば、問題なく答えられるはずです*2。尚、質問はホーム言語がJavaである前提です。 下記質問にそれぞれ50文字以内を目安に簡単に説明すること

    Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ
    zetta1985
    zetta1985 2011/03/05
    2はコンパイラのバージョンに依る、から「原則として」か。6は、カプセル化うんぬんより「JavaBeans規約だから」という答えの方が個人的にしっくりくるw
  • Javaによる高階型変数の実装 - プログラマーの脳みそ

    高階関数というものをご存知か。関数自身を引数あるいは戻り値に取る関数のことである。「高階」は「こうかい」と読む。その昔「たかしな」と読んだ人がいたとか、いないとか。 先のエントリ「HttpSessionを型安全にする」では「javax.servlet.http.HttpSessionのsetAttribute()/getAttribute()のようなモノをどうやって型安全にするか」という動機付けから、 public class KeyValue<K> { public <T> void put(K<T> key, T value){} } といったことをやろうとして、Javaの言語仕様上、型変数に型変数を持たせることができないので実現できないと述べた。 簡単に解説すると、ここでKayValueはHashMap的なキーを渡せば値を返すオブジェクトで、型変数Kはキーの集合体を表現している。ty

    Javaによる高階型変数の実装 - プログラマーの脳みそ
  • BytemanによるJava黒魔術 - nekop's blog

    クリスマスも近いですね。さて、クリスマスといえばどういうわけか黒魔術への需要が一気に高まる時期のようですので、Java Advent Calendar -ja 2010の12月20日はJavaの黒魔術をお送りします。昨日はid:celitanでした。 今日紹介する黒魔術はバイトコードインジェクションツールであるBytemanです。 この前ですね、お仕事で「HTTPレスポンスのヘッダが勝手に想定外のものに書き換わる」という不思議現象の相談を受けたんですね。Servletの中ではsetHeader("Foo", "bar")ってしてるのに、実際のレスポンスは"Foo: hoge"とか返ってる。アプリのJavaソース調べてもそんなことしてなさそうだし、Tomcatのソース見てもsetHeader()呼び出しでは何のログも出さないっぽいのでログを有効にしても原因がわからなさそう。なんだこれはとか思

    BytemanによるJava黒魔術 - nekop's blog
  • Project Coin

    このエントリは Java Advent Calendar -ja 2010 の一環です。 さて、何を書こうかいろいろ悩んでいたのですが、やっぱり櫻庭といえば Java SE の新しめのところというイメージがあると思うので、新しいところを取りあげようと思います。 で、取りあげるのが Project Coin です。 Project Coin は Java 言語仕様の小さな変更を行なうためのプロジェクトです。昔の言い方であれば Ease of Development に相当して、もっと簡単に書けるようにすることが目的です。 この Project Coin は来年リリース予定の Java SE 7 で導入されます。ところが、Project Coin のほとんど機能はすでに OpenJDK に実装済みです。 ということで、すでに使える Project Coin を使ってみてみましょう。ここでは J

  • Baseunits Library - 都元ダイスケ IT-PRESS

    さて、Java Advent Calendar -ja 2010 : ATND 10日目。昨日は、id:yuroyoro でした。二日連続で真っ黒な魔術が紹介されたので、ここは真っ白で実用的な奴をひとつ。 最近Domain Driven Design(DDD)っていう設計手法が、自分の周辺一部で話題になっている。当然、賛否両論なんだけども*1、個人的には好きな考え方でして。ま、詳細は色々な方がブログに書いているので割愛します。興味あれば読んでみましょう。洋書*2だけどw Domain-Driven Design: Tackling Complexity in the Heart of Software 作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハードカバー購入: 4人 クリック: 113

    Baseunits Library - 都元ダイスケ IT-PRESS
    zetta1985
    zetta1985 2010/12/22
    DDDの実例コード再構成。これは使えそう
  • Javaの型パラメータ境界指定を使って型を合成する話 - 矢野勉のはてな日記

    Javaはい。開発者のあいだでAdvent CalendarがはやってるみたいなのでJavaでもやろうという話があり、早速はじめることにしました。Java Advent Calendar -ja 2010 : ATNDほんとは1日からはじめるものらしいんですが、いいじゃないですかそんなこと。5分で考えて5分でかけるものでOK、ということで、最近遊んでた、Javaで型を合成する話を書いてみようと思います。ネタがぱっと思いつかなかった…あらかじめ書いておくと「できるかなと思ったけどやっぱりできなかったね」という話に過ぎませんのでよろしく。戯れ言です。真剣に読むと損します。あと5分で書けませんでした。型合成Javaでインターフェイスをきるとき、メソッドの引数はおおむねすべてインターフェイスになるように設計するのがよいとされているようです。そうしてると「このメソッドの引数はMapだけど、このMap

  • http://atnd.org/events/11000

    http://atnd.org/events/11000
  • Javaプロジェクトのパッケージ名をざっくり変えたい - nekop's blog

    自分のローカルにあるjp.programmersパッケージになっているサンプルコードとかのプロジェクトをcom.redhat.jbossパッケージとかにリネームしてお客様に渡したいなー、というケースがあったのでシェルスクリプト書いた。 #!/bin/sh # Usage: ./repackage.sh org.example com.example.foo FROM_PACKAGE=$1 TO_PACKAGE=$2 find . -type f -not -name '.*' | xargs perl -i~ -pe "s/\Q$1/$2/g" FROM_PACKAGE_DIR=`echo $FROM_PACKAGE | tr . /` TO_PACKAGE_DIR=`echo $TO_PACKAGE | tr . /` mkdir -p src/main/java/$TO_PACKAGE

    Javaプロジェクトのパッケージ名をざっくり変えたい - nekop's blog
  • Java VMオプションメモ - nekop's blog

    自分がJBoss ASでよく利用するJVMオプションのリスト。チューニングのベースでもある。 -server -Xmn256m -Xms1024m -Xmx1024m -XX:PermSize=256m -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=8 -XX:TargetSurvivorRatio=90 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintClassHistogram -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true

    Java VMオプションメモ - nekop's blog
  • JasperReportsとiReportで帳票の常識を理解しよう

    稿では、「帳票」の常識を説明し、Javaで書かれたオープンソースの帳票作成ソフト、JasperReportsとiReportの使い方を紹介します。ソフトウェアを実際に使うことで、帳票というものを体感して身に付けることを目指しています。 日人なら知っておきたい「帳票」の常識 帳票とは、以下の記事にもあるとおり、基は会計情報を記録するための紙を意味する用語だったようです。 しかしながら、コンピュータで出力する「帳票」は会計に限定したものではなく、発注書や納品書、請求書、そのほかさまざまな報告書、申請書などをすべて「帳票」と表現しています。 業務アプリケーションでは、帳票の出力はほぼ必須といっていいほどになってきます。そのため、多くの会社が帳票生成のライブラリなどを販売しています。 商用の帳票生成ツールで、有名なソフトウェアとしては、Visual Studio 2008 Profession

    JasperReportsとiReportで帳票の常識を理解しよう
  • 【コラム】攻略! ツール・ド・プログラミング (37) XMPP対応IMアプリを手軽に作成できるJavaライブラリ「Smack」 | エンタープライズ | マイコミジャーナル

    XMPPライブラリ「Smack」 SmackはJavaプログラムで「XMPP(eXtensible Messaging and Presence Protocol)」によるメッセージングを行うためのオープンソースのライブラリである。XMPPはXMLベースのメッセージングプロトコルで、もともとJabber社製のインスタントメッセンジャー(IM)である「Jabber」で利用されており、その後IETFによる標準プロトコルとして認定された経緯から、「Jabber」または「Jabberプロトコル」の名称でも知られている。Jabber自身がすでにオープンソース化されている他、「Googleトーク」をはじめとする大手のIMサービスでも採用されていることから、XMPPは現在では業界の標準的なメッセージングプロトコルとして認識されている。 SmackはJavaで作成されたXMPPライブラリであり、Java

  • Javaはアプリケーション開発言語として行き詰まっている、とアナリスト

    Javaによるビジネスアプリケーションの開発は複雑すぎる。開発チームはJavaからの逃避を検討すべきだ」という内容のレポート「Java Is A Dead-End For Enterprise App Development」(Javaはエンタープライズアプリケーション開発に行き詰まっている)を調査会社フォレスターのアナリストMike Gualtieri氏がブログで公開しています。 Gualtieri氏は、Javaはビジネスアプリケーションの開発言語として確固たる地位を築いており、COBOLが消え去らないのと同じように急に消え去ったりはしないけれど、Java以外の選択肢を検討した方がよいとしています。 ビジネス要件が変わり、プレゼンテーションレイヤで失敗した Javaが行き詰まっているというGualtieri氏のおもな理由をピックアップしてみましょう。 ビジネスの要件が変わってきた 変化

    Javaはアプリケーション開発言語として行き詰まっている、とアナリスト
  • Java で Map を回す時は entrySet の方が早い(とりあえず HashMap の話) - 宇宙行きたい

    最近,SQL ばかり書いてて久しぶりに Java 書いたら 「Map ってどうやって回すんだっけ??」 という超初歩的な疑問がwwww 拡張 for 文で keySet 回せばいいかなぁと思ったら id:sett-4 に 「entrySet まわした方が早かった筈ですよ」 って言われた. 勝手な想像で,entrySet って Iterable#iterator() の Iterator#next() で return new Map.Entry(key,map.get(key)); 的な事してて逆に遅いんじゃね??って思ったので 調べてみた. とりあえずソース読んでみる そしたら public Set<Map.Entry<K,V>> entrySet() { return entrySet0(); } private Set<Map.Entry<K,V>> entrySet0() { Se

    Java で Map を回す時は entrySet の方が早い(とりあえず HashMap の話) - 宇宙行きたい
  • JavalessJava - はてっちょ

    zetta1985
    zetta1985 2010/04/01
    native使った事ないやーヘッダーできるのか・・・
  • Effective Java 読書会 13 日目 「Java の例外めんどくさい」 - IT戦記

    IOException の catch に何を書いていいか分かりません><! はじめに 順番が前後しますが、今回は Java の特徴のひとつである例外機構についてです。 今回の範囲 223 ページ 〜 250 ページ 前回はこちら Effective Java 読書会 12 日目 「スレッド・セーフってなによ!!」 - IT戦記 Java の例外 throw 可能なオブジェクト Throwable インタフェースを実装したもの Exception を継承しない Throwable は基的に使わない チェック例外 メソッドの実装者が「呼び出し元が回復可能」だと考えている例外 ちゃんと「なぜ、例外だったのか」理由が提供されるべき 呼び出し元は try catch で囲むか throws 宣言を書く必要がある Exception を継承していて RuntimeException を継承していな

    zetta1985
    zetta1985 2010/03/30
    神々の遊びが例えになってないw
  • Effective Java 読書会 12 日目 「スレッド・セーフってなによ!!」 - IT戦記

    スレッドセーフ、スレッドセーフって何なのよ!当の気持ち聞かせてよ! はじめに 皆様おひさしぶりです。 久しぶりに Effective Java 読書会のまとめを上げていきたいと思います!!! 今回の範囲 269 ページ 〜 278 ページ 前回はこちら http://d.hatena.ne.jp/amachang/20100309/1268153192 synchronized を付ければスレッド・セーフってわけではない synchronized はスレッド・セーフを実現するための一つの方法(実装の詳細)であって、 synchronized を使っているからスレッド・セーフというわけではないし、 synchronized を使っていないからスレッド・セーフじゃないというわけではない そもそも、スレッド・セーフとは何か そのクラスのインスタンスに対するどんな順番で行われる操作も仕様的に正し

  • Effective Java 読書会 11 日目 「Java マルチスレッド難しいいい」 - IT戦記

    はじめに 順番が前後しますが、都合上「並行性」の章を先に書きたいと思います。 読んだところ 251 ページ 〜 268 ページ 前回はこちら Effective Java 読書会 10 日目 「Java の基テクニック集」 - IT戦記 同期とは何か 同期 = 原子性 + 可視性 原子性(アトミック性) データの状態遷移の過渡的な不整合な状態が(どのスレッドからも)見えないという性質。 適切に相互排他することでデータの原子性を保証できる。(保護されたコードを実行できるスレッドは一つだけ。) 可視性(ビジビリティ) (どのスレッドからも)同じ値が見えるという性質。 普通、変数やフィールドの値はスレッドごとにキャッシュ(レジスタなど)されるなどしていて、スレッド間での同値性は保証されない。 同期するというのは、原子性を保証することだけではなく、可視性も保証することだということを忘れてはいけな

    Effective Java 読書会 11 日目 「Java マルチスレッド難しいいい」 - IT戦記
  • Effective Java 読書会 10 日目 「Java の基本テクニック集」 - IT戦記

    はじめに 読書会に参加していないところがあるので、そこは議事録を読みながら、なるべく自分の言葉で書いていきます! 読んだところ 175 ページ〜 222 ページ 前回はこちら Effective Java 読書会 9 日目 「Enum の拡張とアノテーション」 - IT戦記 引数の検査をきちんとして javadoc の @throws に書く IllegalArgumentException IndexOutOfBoundsException NullPointerException などは、事前に引数チェックして出す。たとえば、 OpenJDK の String(byte[], int, int, String) では、以下のような実装になっている、自分で引数チェックをして、その内容を明確に @throws に記述している。 // チェック関数 private static void c

    Effective Java 読書会 10 日目 「Java の基本テクニック集」 - IT戦記
  • Effective Java 読書会 9 日目 「Enum の拡張とアノテーション」 - IT戦記

    はじめに 今日読んだところ 160 ページ〜 174 ページ 前回はこちら Effective Java 読書会 8 日目 「それ enum で出来るよ」 - IT戦記 enum は継承できない 混乱するので、あまり出来ないほうがいいけどね! オペコードのようなものは インタフェースを切って enum が継承してやれば拡張可能に出来るよ! たとえば、 jython のバイトコードは package org.python.bytecode; public interface Instruction { void accept(BytecodeVisitor visitor); } って感じのインタフェースを以下の enum で実装してる package org.python.bytecode; public enum BytecodeInstruction implements Instru