タグ

javaに関するmayaaのブックマーク (11)

  • ちょっといいJavaコードを書こう - Qiita

    一人でプログラムを書いてたりすると、環境によってはあまりコードの書き方には指摘を受けなくて困りますよね。プロになっても、曲がりなりにもちゃんと動くコードを書けてしまうとあまりに当たり前のことなんかは指摘されることも稀で、そのままある程度偉くなっちゃった日には、もはや自分で気付くしかなくなってしまいます。 FindBugsとか、Effective Javaなら使ったり読んでみたり読ませたりすることはできますが、それ以前のところって難しいんですよね。よいコードと言うよりそれが当たり前だと思われているので、指摘するにしても「こうすればいいよ」(アドバイス)じゃなくて「なんでこうしてないの?」(詰問)になってしまいがちです。 そこで、最近そういうJavaニュービーに指摘している(したい)ことの多い、Javaの基礎的な事柄をまとめてみました。ワタシJavaチョットデキルって人は、これ以外にもやりがち

    ちょっといいJavaコードを書こう - Qiita
    mayaa
    mayaa 2019/04/05
  • JavaのGCの仕組みを整理する - Qiita

    最近メモリを大量に使うJavaのプロセスに関する仕事があり、GCの知識が必要になったので調べたことをまとめておきます。調べたら色々出てくる時代ですが考えを整理するために書きました。間違った認識をしている可能性はあるのでそこはご指摘いただけると幸いです。 注: この記事は最新のGC事情を整理するものではなく、古典的?な手法について書いてます。 JVM まずはざっくりJavaの基的な仕組みから。 JavaのプロセスはJVMと呼ばれる仮想マシンの上で動作します。この仕組みは様々なOSで動作し、環境の差異を気にする事なくコンパイルされたJavaのコード(クラスファイル)を様々な環境で実行可能にしてくれます。 JVMにはいくつ種類がありますが、記事はOpen JDKで用いられるHotSpot VMの場合を想定しています。(他のJVMとの違いはわからない) ヒープ領域 Javaのプロセスを開始する

    JavaのGCの仕組みを整理する - Qiita
    mayaa
    mayaa 2019/04/03
    メモリ管理
  • コードから情報を追い出せ!プロパティファイルの常識

    プロパティ操作の基java.util.Propertiesクラス Java言語からプロパティファイルを扱う1つ目のAPIは、java.util.Propertiesクラスです。クラス名がそのままプロパティファイルを扱うことを示していますね。 import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertiesSample { public static void main(final String[] args) { final Properties prop = new Properties(); Inp

    コードから情報を追い出せ!プロパティファイルの常識
    mayaa
    mayaa 2015/01/25
  • 『バッチ処理を非同期で起動するには?』

    Spring BatchをWEBから起動したい場合があるかもしれません。 または、サーバにBatchをおいておいて、他のサーバからキックだけしたい場合があるかもしれません。 こんなときは「非同期」で起動したくなると思います。 この記事ではSpringBatchを非同期で起動する方法を見てみます。 実はとっても簡単です。 【サンプル(SpringBatch設定ファイル一部抜粋)】 <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository" /> <property name="taskExecutor"> <bean class="org.springframe

  • File.getCanonicalPath() と File.getAbsolutePath() の違い: uyota 匠の一手

    javadoc でこの二つの説明を読むと、とても回りくどく書かれている。「この抽象パス名の正規のパス名文字列を返します。」とあっても良く判らない。 そこで、もっと詳しい説明を見る事になる。「正規のパス名は、一意の絶対パスです。正規のパス名の正確な定義は、システムに依存します。」どうも、一意かどうかが、getCanonicalPath と getAbsolutePath の大きな違いらしい。しかも、システム依存とくるから不安に拍車がかかる。 さらに読み進めると「パス名から "." や ".." などの冗長名を削除し、シンボリックリンクを解決し (UNIX プラットフォームの場合)、ドライブ名の大文字小文字を適切に変換し (Microsoft Windows プラットフォームの場合) ます。」とある。この文章がいつも混乱の元になる。絶対パス名なのに、なぜ、"." や ".." などを削除するの

    mayaa
    mayaa 2013/01/12
    path取得方法
  • Googleが開発したJavaデバッグを簡単にする新技術「cofoja」 | エンタープライズ | マイコミジャーナル

    Java Programming Language Googleの20%プロジェクトからJava向けの新しい技術「cofoja (Contracts for Java)」が公開された。既存の実装に大きく手を加えることなく、デバッグをより簡単にしてくれる効果が期待できる。バグは些細なコードが起こすものだったりするが、それを追跡して発見するのは時に困難を極める。これは問題が発生した箇所と、実際にバグがある箇所が大きく離れていることが理由になっていることもある。問題発生箇所とバグ発生箇所を近くにまとめることができれば、それだけバグ発見も取り組みやすくなる。 cofojaはこれを簡単に実現するための技術。インタフェースに制約表現を追加可能にするところがポイントとなっており、クラスの実装に手を加えなくてもインタフェースに制約表記を追加することで実行時にチェックできるようになる。ブログに掲載されている

    mayaa
    mayaa 2011/02/09
  • Javaプログラマが知るべき9のこと - @katzchang.contexts

    はじめに ソースコードは設計であり、コードの記述は品質に直結するのは言うまでもない。ちなみに、プログラマにとって特に重要なのは保守性だ。コードは書いた直後から保守対象となるからだ。コードは要求文書の範囲で動けばいいと思っている人がいれば今すぐ、ソースコードをコピペして100klに増えるプラグインがいつの間にかインストールされる呪いをかけてあげよう。幸い、ここを読んでいる人にはそんな人はいないだろうと思うけれども。 ということで、コードの品質を下げる要因、すなわちシステム全体の品質を下げる要因となり、かつ使われやすいアンチパターンを挙げ、対策を検討していくことにする。対象は以下: 出力パラメータ 処理状態返却 意味のある配列 無意味な初期化 多すぎるtry-catch 暗黙の順序 コンパイラ警告の無視 過剰なコメント e.printStackTrace() 出力パラメータ メソッドの引数にオ

    Javaプログラマが知るべき9のこと - @katzchang.contexts
    mayaa
    mayaa 2011/02/09
  • FrontPage - java

    CONTENTS トップページ Javaでプログラムを始めるためには、まず何をすればいいの? Java事典 FAQ ソース貼付け 貼り付け方 過去ログ一覧 スレ立て用テンプレ 整形ルール 最新の20件2020-11-14 FAQ 2005-12-06 HW972 Wig MovingObject 2006-11-04 JSP session 2012-07-15 2ch Java関連スレッド一覧 2009-06-19 ★★ Java の宿題ここで答えます Part 67 ★★の737 2011-03-03 2ch Java質問スレッド過去ログ一覧 2006-12-13 txt file の読み込みについて 2007-11-05 宿題スレPart53(Appletにする前にまず改良版) 875-876 宿題スレPart53 875-876 宿題スレPart56 874 (HPのソースをtxt

    mayaa
    mayaa 2010/12/19
  • 意外と知らないバージョン表記・数字の豆知識

    この記事で分かること ソフトウェアのバージョン表記が示す開発段階や数字の意味 Alpha(アルファ)やBeta(ベータ)、その他特定の数字の意味 マーケティング戦略などに左右されたバージョンアップの例 ちまたにあふれるバージョン表記 少し前に「Web 2.0」「○○2.0」という表記が流行したのを覚えていますでしょうか。よく見かける広告のコピーにも、最近では「バージョンアップ」という言葉が普通に使われています。バージョンや、バージョン表記は、ソフトウェアの世界だけでなく、ごくごく一般化したように思えます。しかし実際には、どういう意味か分からないのが、バージョン表記です。 アプリケーションソフトウェアの開発は、さまざまな状態/段階を経て完成します。その段階/状態と、リリース後の状態/段階を示したのが、バージョン表記です。 例えば、数字以外でも、以下のような表記を見かけたことはありませんか?

    意外と知らないバージョン表記・数字の豆知識
  • 良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog

    Java並行処理プログラミングを読み終えた。ここ 1 年に読んだ技術書の中でダントツのベスト。(2位はWorking Effectively With Legacy Code) 「Javaだから関係ない」と思った人にこそ読んで欲しい。僕もここ数年 Java のコードなど一切書いていないが、このを読んで得たものは非常に大きかった。 このでは マルチスレッドプログラミングにおける問題と背景、その対処方法 Java が提供している API の設計と実装 を解説している。分かりやすさとレベルの高さを兼ね備えたとても良い。翻訳も最高。 僕はこのを読んで、Java の並行処理プログラミングは、想像を遙かに超えて進化している事に驚きを隠せなかった。何回も twitterJava すげーと叫んだ。 これを読んでしまうと、最近僕が熱心な Scheme も含めて、自分の身の回りにあるプログ

    良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog
  • 5年後に後悔しないJavaプログラムの書き方 - L'eclat des jours(2009-07-02)

    _ 5年後に後悔しないJavaプログラムの書き方 ここ数日、死ぬほど後悔しまくっているので、あらためて(というのは、数年前にも一度後悔しまくって、そのときの知見はあらかた処方箋とかコーディングの掟に書いているからだが)後悔しないための書き方をいくつか紹介する。 とにかく、ファクトリメソッドパターンを使うこと。 これは当に重要。しかも簡単でありながら効果は絶大。 だめな例。 public class FooBar { private Connection conn; ... protected void setup() { ... conn = DriverManager.getConnection(url); ... } urlを指定することや、DriverManagerの実装を交換すれば良いだろうと想定していても(というか、Connectionならそういう方法もあり得るが、そうはいかな

  • 1