タグ

Javaに関するno8410のブックマーク (107)

  • Javaライブラリを配布する際のログ周りにおける配慮と実践 - Kengo's blog

    2020-07-22更新: 以下の投稿で情報をアップデートしています。 https://blog.kengo-toda.jp/entry/2020/07/21/223136 いつも購読させていただいている id:teppeis さんのブックマークに以下のエントリが流れてきて、なるほどこいつはたしかに厄介だと思いました。 javaのロガーが多すぎて訳が解らないので整理してみました - 文系プログラマによるTIPSブログ ただSLF4Jが最も先進的かつ著名なインタフェースである以上、配布側としてはSLF4Jを使いつつ問題を解決したいところです。他のインタフェースを使ったりオレオレ実装を使ったりしてしまうと、それこそユーザの自由度を奪ってしまう形になります。 実際、SLF4Jを配布パッケージに含めないという簡単な解決法がありますので、簡単に紹介します。悲劇を繰り返さないためにライブラリ開発者がす

    Javaライブラリを配布する際のログ周りにおける配慮と実践 - Kengo's blog
  • Java 8 で Scala のような何かを使う - seratch's weblog in Japanese

    Java 8 では JSR 335: Lambda Expressions が取り入れられます。 これを使うと Pure Java でありながら「どう見ても Scala」というコードが書けるようになります。 主に私がメンテナンスしている ScalaFlavor4J というライブラリがあります。 https://github.com/m3dev/scalaflavor4j Java 7 まではこんな感じで使う必要がありました。 Seq.apply(1, 2, 3, 4, 5).filter(new F1<Integer, Boolean>() { public Boolean apply(Integer i) { return i > 2; } }); // -> Seq.apply(3, 4, 5) しかし、Java 8 ではこんなにシンプルに書けてしまいます。 Seq.apply(1,

    Java 8 で Scala のような何かを使う - seratch's weblog in Japanese
  • 第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp

    あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー

    第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp
  • 「Java 7 Update 11でも脆弱性は残っているから引き続きJava無効化を」という話について

    Java SE 7 Update 11 でもバグが修正されていない」という専門家の意見が書いてあるロイター通信の記事(Oracle updates Java, security expert says it still has bugs)をTwitterで紹介しましたが、「やはり修正されていない」「修正されたのは2つの脆弱性の内の一つだけ」というニュース記事が複数出てきました。 これらのニュース記事には、「Java 7 Update 11でも脆弱性は残っているから、Java(Java appletを起動するためのブラウザ上のJavaプラグイン)をひきつづき無効化せよ」という内容のCERTの意見が掲載されています(無効化手順はこちら)。 しかし、日語の記事が曖昧で、少し情報源のページを読んでみると、単に「片方が修正されていないから危険」というわけではない、ちょっとややこしい話のようだった

    「Java 7 Update 11でも脆弱性は残っているから引き続きJava無効化を」という話について
  • 遅延評価いうなキャンペーンとかどうか - ぐるぐる~

    遅延評価については以前も書いてるんですが、そのときは結論なしでした。 が、ちょっと考えるところがあって、言語を Java に絞って自分の考えを明確にしておきます。 結論から書きましょう。 「Java(とC#) で遅延評価って書いてあるものは遅延評価ではない」です。 Java における「評価」とは まず一番最初に、Java で「評価」って言うと、どういうことを指すのかを確認しておきます。 言語仕様の該当部分を要約すると、こんな感じでしょうか。 プログラム中の式を評価すると、結果は 変数 値 無し のうちのどれかとなる。 評価した結果が値になる、というのはいいでしょう。それ以外の 2 つを軽く説明します。 評価の結果が「変数」とは? コメント欄で指摘が入っています。 代入の結果は変数ではありません(15.26)。 結果が変数となるのは、ローカル変数、現在のオブジェクトやクラスの変数、フィールド

  • android のメモリ管理と出会う旅 [後編]

    昨日から NDK (Androidアプリを C/C++ を使って開発する環境) を触り始めましたが、うわーあー超楽しいな!。Javaも新しい事を知るって意味では楽しかったけど、基不自由を強いられるだけの緊縛プレイなので、久々に何の縛りもないのが楽しすぎるったらもう! もうテクスチャまでは出てるので、あとはひたすら Java から C++ に書き換えるだけ。 で、昨日 の続きです。android のメモリのモニターはできるようになったので、いろいろ触りながらメモリ状態を見比べてみたところ、いろんな事が分かりました。 Java触りはじめて1ヶ月そこら、しかもを読まない人の言う事ですから、世間一般とはちょっと考え方が違うかもしれませんが、自分で試した結果そうなったんだから、僕はそれを信じます。そんなお話。 脱!static 宣言! 元来、Java だろうが C++ だろうが、static 変

    android のメモリ管理と出会う旅 [後編]
  • 若作りするためのJavaコード - 谷本 心 in せろ部屋

    このエントリーは Java Advent Calendar 2012 の10日目として書きました。 なんか色々あって、公開が2日ぐらい遅れてしまってごめんなさい(><) 前日は、Hideki Kishida (@quicy) さんの「Xtend の Lambda とストリーム処理」です。 http://legacy-style.blogspot.jp/2012/12/xtend-lambda.html 翌日は、Katsumi Kokuzawa (@kokuzawa) さんの「WiiRemoteJで遊ぼう on OSX 10.8.7」です。 http://kokuzawa.github.com/blog/2012/12/11/wiiremotejdeyou-bou-on-osx-10-dot-8-7/ どちらも今風ですね! そんな中、若干、加齢臭が気になり始めたこの頃の私としては、 若さアピ

    若作りするためのJavaコード - 谷本 心 in せろ部屋
  • はじめてのDependency Injection - _development,

    Android Advent Calendar 2012 に参加しています。 エントリはDependency InjectionによるAndroidアプリケーションの実装とテストの一方法について述べています。 文中に出てくるコードは全てgithubから取得できます。 Dependency Injectionとは簡単にいうと、あるオブジェクトが依存しているオブジェクト(以下、Dependency)を別の誰かが注入(以下、Injection)してあげることでオブジェクトの関係を疎結合にする方法です。 Dependencyを誰かがInjectionしてくれると、なにがいいのか? まず、逆に誰もInjectionしてくれない場合を考えてみます。 Dependency Injection 前 誰もInjectionしてくれない場合は自分でDependencyを設定するしかありません。 たとえば、天

    はじめてのDependency Injection - _development,
  • 米Google、JavaコードをObjective-Cに変換するツール「J2ObjC」を公開 - @IT

    2012/09/18 米Googleは、オープンソースのコード変換ツール「J2ObjC」をリリースした。JavaのソースコードをiOSアプリ開発に使われるObjective-Cのソースコードに変換できる。 Googleのオープンソースブログによると、同ツールではJavaコードをiOSアプリケーションビルドの一部とすることができ、生成されたファイルの編集は不要。データアクセスやアプリケーションロジックといった、UI以外の部分に関するコードをJavaで記述し、それをWebアプリだけでなくAndroidアプリ、iOSアプリで共有できる。 Java 6を完全サポートしているほか、ランタイム機能のうち、例外、内部および匿名クラス、ジェネリックタイプ、スレッド、リフレクションなど、クライアントサイドのアプリケーション開発に必要な機能の大半をサポート。JUnitテスト変換と実行にも対応し、XcodeとM

    no8410
    no8410 2012/09/19
  • Java のチェック例外と非チェック例外の考察まとめ - 全力で怠けたい

    世間ではオワコンと揶揄されることも珍しくない Java ですが、Java を初めたばかりのエンジニアがチェック例外と非チェック例外の使い分けについて「ベストプラクティスないの?」と調べたのをまとめてみました。 エントリまとめ どのエントリも Java についての深い洞察と開発の実践現場での生きた経験をもとに書かれていて大変に勉強になりました *1 エントリ中からリンクされているエントリもぜひ一読されることをおすすめします。 検査例外と非検査例外(実行時例外)をどう使い分けるか - Lino Blog Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指して Javaのチェック例外はクソ仕様 - やさしいデスマーチ 例外の扱いについて その2 - じゅんいち☆かとうの技術日誌 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤

  • Eclipse JunoがEclipse 4を標準に採用

    Rustが再評価される:エコシステムの現状と落とし穴 In this article, we share findings and insights about the Rust community and ecosystem and elaborate on the peculiarities and pitfalls of starting new projects with Rust or migrating to Rust from othe...

    Eclipse JunoがEclipse 4を標準に採用
  • Xtend、Javaをエクステンドする

    Eclipse Junoのリリースとともに、Eclipse FoundationはXtendのリリースを高らかに発表した。これはラムダを備えたJava互換の言語で、Javaランタイムに完全な互換性をもつ。XtendはXtextというDSLライブラリおよびエディタ生成のためのプラグインスイートをベースにしている。 ScalaやCeylon、Kotlinと違って、Xtendは独自のバイトコードコンパイラを必要としていない。その代わり、XtendのソースファイルはJavaのソースファイルに変換され、それから通常のJavaコンパイラでコンパイルされる。その結果、Xtendは、標準的なJavaプロジェクトで使えるJavaを生成する、開発時の変換ツールとして利用したり、コンパイル時にJavaソースファイルを生成するのに使うソースモデルとして利用することができる。 Xtendをコンパイルするには2つの方

    Xtend、Javaをエクステンドする
  • Java の語彙で Maybe を説明してみる - ぐるぐる~

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー を読んで。 Maybe は値があるかないかを型で表すことができます!そう、直和型なんです!とか言われてもイミフだと思うのです(リンク先のエントリがそう説明してるわけではないですが)。 Java の語彙で Maybe の説明をできたら嬉しい人もいるんじゃないかなぁ、とかなんとか。 ただし、書いてたら結構長くなりました。時間がある人はどうぞ。 Maybe? null より安全に「値がないこと」が扱えるものだよ スタート地点としてはこれでいいでしょう。 以降で、「なんで安全なの?」という全うな疑問に答えてみたいと思います。 問題点 int で説明すると煙に巻いてしまうような気がしたので、User クラスを見てみます。 import java.util.*; class User { final String name;

    Java の語彙で Maybe を説明してみる - ぐるぐる~
  • ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ

    先日twitterで "Expression Problem" という問題を知った。 静的な型付けの下で、場合分けのデータ構造に対して、新しい場合分けとその場合に対する新しい処理を、元のソースコードに手を加えることなく拡張定義すること 2009-05-16 この問題が意図するところを語るにはまずオブジェクト指向から流れを辿らねばなるまい。 オブジェクト指向のポリモーフィズム Javaのようなオブジェクト指向の言語で、ある特定のメソッドがあることを抽象クラスHogeで保証するとしよう。 public interface Hoge { void hoge(); } このとき、機能性、つまりメソッドというのは増えることがない固定のものだが、継承して実装されたクラスというのは自由に増やすことができる。そして、抽象型Hogeを扱っている既存コードは修正する必要がない。 これはいわゆる開放/閉鎖原則(

    ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ
  • Javaのラムダ式導入に関する最新提案の雑なまとめ - 矢野勉のはてな日記

    java7月頭に,Brian GoetzがJavaにおけるラムダ式導入に関する最新提案のドラフトを出しました。State of the Lambda 私はこの提案書と,提案書を元にした英語記事を読んだだけですが,Twitterで話していると,23日くらいにこの提案を元にしたソースがJavaのソースリポジトリにコミットされたらしい。ただし,中ではまだ議論続発してるらしい。ちなみに英語記事はラムダについての連続記事の4回目で,5回目ではWicketでラムダ式を使うとどうなるか,という考察が載っています。提案書のラムダ式とWicketの非整合部分についての考察で,Wicket好きの人は読んでみてもいいと思う。あと,空コンストラクタがないクラスについて提案書は明確なところ書いてないよね,みたいな指摘も。せっかくなんで,最新提案におけるラムダ式実装をまとめておきます。いままでのあらすじ最新提案書では

  • 続:旧 Java SE API リファレンスへの新しいリンク先変更について

    2012年4月11日 at 3:18 午後 2件のコメント 先日、「新しい Java SE API リファレンスの入手先について」のエントリでsun.com のドメイン廃止に伴い、Java SE API リファレンスのオンライン参照が不可能となった旨、ご報告を致しました。その節はご迷惑を御掛けし大変申し訳ございませんでした。 その後、社内でオンライン公開について協力してくださる方々が現れ 、彼らのご協力のおかげで、日から改めて oracle.com ドメイン経由で参照できるようになりました。 新しい URLを下記にご報告致します。全てのドキュメントは OTN 経由から参照可能です。 OTN Java Developers →Java SE API & ドキュメント からご参照頂けます。 直接のリンクは、それぞれ下記からたどれるようになりました。是非新しくなったリンクをご使用頂けますよう宜

    続:旧 Java SE API リファレンスへの新しいリンク先変更について
  • JavaVMをJavaScript/ECMAScript5対応にする「Nashorn」、JDK 8でリリース。Node.jsとの連係をオラクルがデモ

    JavaVMをJavaScript/ECMAScript5対応にする「Nashorn」、JDK 8でリリース。Node.jsとの連係をオラクルがデモ オラクルが開発中の「Nashorn」は、JavaVMでJavaScriptを実行可能にするソフトウェア。その詳細が4月4日と5日に六木で開催されたJavaOne Tokyo 2012のセッション「The Future of JavaScript in the JDK」で明らかにされました。 JavaVM上のJavaScriptエンジンとしてはMozillaが開発したオープンソースのRhinoがすでにありますが、Nashornはオラクル社内のプロジェクトとして新しく書き起こしたJavaScriptエンジン。Java 7で加わったInvoke Dynamicsなどの新機能も活かした「2012年におけるRhino」(セッションの講師でNashor

    JavaVMをJavaScript/ECMAScript5対応にする「Nashorn」、JDK 8でリリース。Node.jsとの連係をオラクルがデモ
  • Java開発で泣かないためのPlay frameworkの基礎知識

    Javaの常識を変える「Play framework」とは 「Play framework」は、サーバサイドJavaScalaのためのMVCフレームワークです。この連載では、主にJavaのフレームワークとしてのPlay frameworkを紹介していきます。でも「Javaで、Web向けで、MVCで……」なんて、ありふれた感じですよね。それなら「Scalaで、どう作るのか」という話の方が興味あるという方もいるでしょう。 しかし、Play frameworkはバージョン1まではJavaのフレームワークとして作られていました。また、ScalaJavaVM上で動作するプログラミング言語です。つまり現在の最新バージョンの2でも基礎の部分で動いているのはJavaです。Play frameworkを知るためには、まず基礎から固めていくのが正攻法だと思います。Scalaについて知りたい読者は、以下の記

    Java開発で泣かないためのPlay frameworkの基礎知識
  • [速報]JavaOne Tokyo基調講演。JavaへHTML5機能統合、Java EE 7のクラウド機能などを紹介。JavaOne Tokyo 2012

    [速報]JavaOne Tokyo基調講演。JavaHTML5機能統合、Java EE 7のクラウド機能などを紹介。JavaOne Tokyo 2012 「JavaOne Tokyo 2012」が開幕しました。国内での開催は7年ぶり、サン・マイクロシステムズがオラクルに買収されてからは初めての開催となります。 初日の基調講演は「Java Strategy Keynote」として、Java全体を俯瞰した今後の方向性、ロードマップなどがおもなテーマ。いままで別々に行われていたJava MEとJava SEのリリースを同期させていくこと、Java EE 7でのクラウド対応、JavaHTML5の機能を統合するProject Avatarの紹介などが行われました。 午前9時から行われた基調講演の内容をダイジェストで紹介します(ちなみに、Oracle OpenWorldとJavaOneは午前9時か

    [速報]JavaOne Tokyo基調講演。JavaへHTML5機能統合、Java EE 7のクラウド機能などを紹介。JavaOne Tokyo 2012
  • GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き) - 主に言語とシステム開発に関して

    GoFデザインパターンの一覧表と,活用のためのコメント,および入門者が独学するためのリンク集(サンプルコード付き)。 入門者の独学を支援するために,このページのURLを提示して熟読させ,各パターンを短時間で効率よく学んでもらう。 デザインパターンはプログラマの常識だ。 Java使いかどうかは問わない。 にも関わらず,入門書を買ったまま,途中で挫折する人が多い。 挫折の原因は,パターンの数が23もあって,多いからだろう。 全パターンをすんなり覚えてもらうためには,各パターンごとに 「要するにこういう目的のパターンなんだ。」 「10文字で表現すると,パターンの意味はこうなんだ。」 という要点・質を,短いコメントで伝えれば助けになるだろう。 こういった学習を通して,Java言語の「設計思想」も併せて感じ取ってゆけるはず。 全パターンの一覧表(要約コメント付き) 全パターンについて,10文字以内

    GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き) - 主に言語とシステム開発に関して