タグ

Javaに関するHHRのブックマーク (165)

  • Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 注:記事の内容はJavaで公式にドキュメントされているものではなく筆者の見解です。とはいえクラスを設計する上で有用な指針たり得ると思われるので公開したものです。 おさらい - 検査例外と非検査例外 Javaの例外クラスには「catchしないとコンパイルエラーになる」検査例外(チェック例外、checked exception)とそうでない非検査例外(非チェック例外、unchecked exception)があります。 検査例外は最近は嫌われる傾向がありC#では採用されていませんしAltJava言語も軒並み不採用、さらにはJavaの新しめ

    Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita
    HHR
    HHR 2018/01/06
    チェック例外(checked exception)と非チェック例外(RuntimeExceptionとその子、unchecked exception)について
  • BigDecimalメモ(Hishidama's java.math.BigDecimal Memo)

    BigDecimalを作るコンストラクターやメソッドには、引数にMathContextやスケール(小数点以下を保持する桁数)を指定するオーバーロードがあるものもある。 Stringを引数にとる場合、通常の数値表記(「123」や「123.4」とか)の他に、指数表記(「1e10」とか)も受け入れられる。 BigDecimalは不変オブジェクトなので、一旦初期化した値を変更することは出来ない。 (add, subtract, multiply, divideといった演算メソッドを呼ぶと、新しいBigDecimalを返す。(List#add()だと自らの中に要素を追加するのに、BigDecimal#add()は自らを変更せずに別のBigDecimalを返すので、違和感がある…。日付時刻だと、加算はaddでなくplusメソッドとなっている)) valueOf(long)を使ってBigDecimalを

    HHR
    HHR 2018/01/05
    BigDecimal自身は10進数の固定小数を扱える。doubleは2進数の浮動小数なのでdoubleで初期化する場合は変換する際に小数点以下の値が変わってしまうことがある。小数を扱いたい場合はdoubleを使わずStringで初期化する方がよい
  • 強いエンジニアにHelloWorldさせてみた(縛りあり) - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    強いエンジニアにHelloWorldさせてみた(縛りあり) - Qiita
  • MacでのJAVA_HOME設定 - Qiita

    2021年5月7日追記 個別にJDKをインストールするのを止めてSDKMAN!を使いましょう。 rbenvやpyenvのように複数のJDKをバージョン別に管理できますし、JDK以外のgradleなどのJVM言語開発用ツールも同様に管理できます。 以下は古い内容ですが、2021年5月13日現在の最新のmacOS Big Surでも利用可能な方法ですので一応残しておきます。ですが個人的にはmacOSのバージョンに依存しないSDKMAN!の使用を推奨します。 [Deprecated] 注意事項 記事に書いてある内容はOracleJDK,OpenJDK,AdoptOpenJDKで動作を確認したもので、他のJDKについては不明です。 [Deprecated] 忙しい人向け export JAVA_HOME=`/usr/libexec/java_home -v 10` #java10が使いたいとき

    MacでのJAVA_HOME設定 - Qiita
    HHR
    HHR 2017/12/07
    export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
  • Android開発における定番ライブラリ22選 - kobakei's blog

    Androidをはじめたばかり or これから始める人向けにまとめました。UI系ライブラリは種類が多すぎるので除外しています。 公式系 1. サポートライブラリ developer.android.com ※種類が多いのでまとめて1つとカウントしました Androidの後方互換性を維持するために、Googleが提供しているライブラリ群です。機能ごとにパッケージが分かれていますが、ほぼ必須のものが多いです。 appcompat support-v4 multidex design recyclerview cardview etc 2. Data Binding developer.android.com レイアウトにデータを紐付けることで、データの更新に応じて自動的にビューを更新することができるライブラリです。レイアウトの属性を増やしたり、findViewByIdを簡略化するだけでも使えま

    Android開発における定番ライブラリ22選 - kobakei's blog
  • 新しいプログラミング言語の学び方 HTTPサーバーを作って学ぶ Java, Scala, Clojure

    JJUG CCC 2017 Fallでの発表資料です。

    新しいプログラミング言語の学び方 HTTPサーバーを作って学ぶ Java, Scala, Clojure
  • slf4j + logback 導入時の java.util.logging 向け対処 - Qiita

    アプリのログ出力を slf4j + logback の構成にするときに、依存モジュールのログ出力もslf4jに集める必要があります。 Javaには複数のロガーがあっていろいろとわかりにくい状況になっていますが、以下の記事などで状況や対処方法がまとめられています。 javaのロガーが多すぎて訳が解らないので整理してみました - 文系プログラマによるTIPSブログ https://treeapps.hatenablog.com/entry/2012/10/20/java%E3%81%AE%E3%83%AD%E3%82%AC%E3%83%BC%E3%81%8C%E5%A4%9A%E3%81%99%E3%81%8E%E3%81%A6%E8%A8%B3%E3%81%8C%E8%A7%A3%E3%82%89%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E6%95%B4%E7

    slf4j + logback 導入時の java.util.logging 向け対処 - Qiita
    HHR
    HHR 2017/11/23
    slf4j jul 闇 “ jul でのINFO未満(FINE、FINERなど)のレベルのログが出力されないという問題”
  • Javaのログ出力: 道具と考え方

    Concepts and tools of logging in Java. Javaにおけるログ出力の考え方と道具について説明. CC Attribution Licenseの元に公開します.

    Javaのログ出力: 道具と考え方
    HHR
    HHR 2017/11/21
    良資料。歴史。Log4j java.util.logging Slf4j
  • JVMアプリケーションを運用する際のメジャーどころチューニングポイントメモ - yoskhdia’s diary

    JVMにチューニング項目は多々あれど、プロダクションで運用する際に予めおさえておきたい項目をまとめてみるエントリです。*1 勿論、OSもJVMもデフォルトである程度のパフォーマンスは発揮でき、計測を伴わないチューニングは悪手であることはよく知られています。 しかし、設定しておかないとパフォーマンスにそのまま影響すると分かるものを調べないのは裸で戦場に赴くようなものです。*2 どんな項目をどう変更すれば良いのか知っていることは重要な武器なのです。 なぜ調べるのか 今回、チューニングポイントを調べるにあたって、私のモチベーションはどこにあるのかを考えると、以下の要件を満たしたいということがあげられます。 アプリケーションとして求められる品質水準として動作する → 性能目標 異常時に事象を追うことができる ここでいう品質水準・異常とは、パフォーマンスが明らかに低い、アプリケーションがクラッシュす

    JVMアプリケーションを運用する際のメジャーどころチューニングポイントメモ - yoskhdia’s diary
    HHR
    HHR 2017/11/07
  • JMXのメトリクスをfluentd経由で蓄積する | nagaseyasuhito Daily works.

    みなさんJMXは使っていますか?Javaアプリケーションのメモリ使用量を始めとした統計情報を取得したりできる、運用には欠かせないモニタリング・管理の仕組みですが、統計情報を蓄積する方法に悩んでいる方も多いのではないでしょうか。 今回はアプリケーションから取得できる様々な統計情報をfluentd経由で蓄積し、分析やトラブルシュートに活用する方法を紹介します。 JMX用のfluentdプラグイン JMXの統計情報をfluentdで収集するfluent-plugin-jolokiaというプラグインを使います。 fluent-plugin-jmxではなくfluent-plugin-jolokia?と思われるかもしれません。 JolokiaはJMXをJSONベースのREST APIとして提供するためのエージェントです。fluentdのプラグインはRubyで書かれていますが、Rubyから直接JMXのプ

  • thisを書く派?書かない派? - Qiita

    あすかです。 プログラミングしてる時、たまに気になる話を雑めに書いてみます。 (´・ω・`) C#、VBやJavaなど、クラスベースのオブジェクト指向言語を前提にした話ですが、this(Me)を書いているプログラム、そうでないプログラムをよく見かけます。 例えば、thisを書くのは このような場面ではthisを書きます。文法上の制約ですから当たり前です。 今回は、このようなものではなく、thisを書かなくてもいい場面の話です。 thisを書くメリット ちなみに私はthisを書く派です。 というのも、後でコードを読み返す時に、ローカル変数とフィールド変数の区別が一発で付くからです。 VSはthisを色分けしてくれますよね。 けっこう地味かもしれませんが、長いクラス(といっても500行を超えるようなクラスはめったに書きませんが)の一部分だけを読む時に、thisの存在はかなり役に立ちます。 他の

    thisを書く派?書かない派? - Qiita
    HHR
    HHR 2017/10/14
    英語っぽくしたいときは付ける。 if this.isCat echo にゃ〜; みたいに。
  • [速報]Java 9が正式リリース、Javaをモジュール化するProject Jigsawがついに実現。今後のJavaは6カ月ごとタイムベースのアップデートへ

    [速報]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をモジュール化して必要な部分だけを使えるようにする

    [速報]Java 9が正式リリース、Javaをモジュール化するProject Jigsawがついに実現。今後のJavaは6カ月ごとタイムベースのアップデートへ
    HHR
    HHR 2017/09/22
  • @IT:Javaパフォーマンスチューニング 第3回

    記事は、HP-UX Developer Edgeに掲載された記事を株式会社アットマーク・アイティおよび記事の筆者が独自の判断のもとに加筆・修正したものです。 今回は、Javaにおけるヒープ・メモリ管理の詳細を説明します。JVMのヒープ・メモリの中で、新しいオブジェクトと古いオブジェクトがどのように配置されるかを理解することで、ヒープ・メモリが有効に利用されているか否かを判断することができます。また、JVMが出力するガベージ・コレクションのログを解析し、オプションの指定によってヒープ・メモリのサイズを適切にチューニングする方法を紹介します。 Java ヒープ・メモリの構造 Javaにおけるガベージ・コレクションのメカニズムを理解するには、まずヒープ・メモリの構造を知っておく必要があります。 図1は、JVM におけるヒープ・メモリの構造を示したものです。この図が示すように、ヒープ・メモリの

    @IT:Javaパフォーマンスチューニング 第3回
    HHR
    HHR 2017/07/03
  • java.util.loggingの闇 - nekop's blog

    Javaの1.4からjava.util.logging(以下JULと表記)というロギングパッケージが標準で使えるようになって、ログ出力のためにlog4jなどのサードパーティライブラリをいちいち導入したりする必要がなくなりみんな幸せになりました。 と言いたいところですこいつが超不便なAPIをしていてとてもとてもとっっっても使い辛い。ふざけんな。 まずさらっと使ってみましょう。Java 7です。 Logger.getGlobal().info("log") Logger.getLogger("foo").info("log") 出力はこうなります。 Jan 15, 2015 5:11:41 PM JUL main INFO: log Jan 15, 2015 5:11:41 PM JUL main INFO: log はい、キモイですね。軽くつっこむと なんで2行なんだよ 日時AM/PM表記か

    java.util.loggingの闇 - nekop's blog
    HHR
    HHR 2017/07/03
  • Garbage Collectionについてちょっと調べてみた - wyukawa's diary

    HBaseのJuliet PauseをきっかけにしてGarbage Collection(以下GC)についてちょっと調べてみました。そういえば長年Javaでお仕事している割にはGCのこと全然知らなかった(汗 GCというのは不要になったメモリを回収することをいいますがそのアルゴリズムにはいくつかあって代表的なものとして以下の2つがあります。 Mark Sweep GC Coping GC Mark Sweep GCはオブジェクトをアプリケーションからたどっていってMarkしていきます。Markが無いのは使われていないオブジェクトなのでSweepします。メリットは実装が簡単なことでデメリットはメモリの断片化、フラグメンテーションが起きることです。 Coping GCはヒープ領域を2つに分けてオブジェクトをコピーしたり移動したりすることです。メリットはスループットが高いことやフラグメンテーション

    Garbage Collectionについてちょっと調べてみた - wyukawa's diary
    HHR
    HHR 2017/05/26
  • G1GCのつかいどころメモ - nekop's blog

    以下の環境とテストでCMSとG1GCを比較してみた。かなり急ぎでやったので間違っている可能性が多少ある。 16 cores, 32GB mem -Xms24g -Xmx24g 8 instances Infinispan 6.0.3.Final DIST cache, put 4GB data (1KB entry * 2M, 2GB data with one backup copy, 2GB * 2 = 4GB) CMS: -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=30 G1GC: -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:InitiatingHeapOccupancyPercent=30 $ java -XX:+UseG1GC -XX:+PrintFlagsFinal

    G1GCのつかいどころメモ - nekop's blog
    HHR
    HHR 2017/05/26
  • Java VMのガーベジコレクションの整理 - Qiita

    Java VMのGC Java VMには様々な種類のGC(ガーベジコレクション)があり、用語を整理しないと混乱します。 GCの種類を整理する前に、まずJava VMのGCは「世代別GC方式」を採っていることを意識しましょう。 Java 7で正式サポートが始まったG1 GCも、世代別GC方式がベースになっています。 「世代別GC方式」の詳細は、様々なWebサイトで紹介されているので、ここではポイントだけを記述します。 世代別GC方式とは Java VMはJavaヒープを、 「New領域(1個)」「Tenured領域(1個)」と「Permanent領域(1個)」に分割し、 さらに「New領域」を「Eden領域(1個)」と「Survivor領域(2個)」に分割します。 生成されたオブジェクトはまずEden領域に入り、最初の数回の「コピーGC」によって2個のSurvivor領域の間を行き来します。

    Java VMのガーベジコレクションの整理 - Qiita
    HHR
    HHR 2017/05/26
  • Concurrent Mark-Sweep Garbage Collection #jjug_ccc

    Re-Introduction: Concurrent Mark-Sweep Garbage Collection @ Japan JUG Conference.

    Concurrent Mark-Sweep Garbage Collection #jjug_ccc
    HHR
    HHR 2017/05/26
  • メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog

    κeenです。 今回の話は別にRustに限ったものではないのですが、よくRustを始めたばかりの人がスタックとヒープが分からないと言っているのをみかけるので少しメモリの話をしますね。 厳密な話というよりは雰囲気を掴んで欲しいという感じです。 メモリは配列 プログラム(プロセス)のメモリには実行するプログラム(機械語)やグローバル変数/定数、関数の引数やローカル変数、その他プログラムで使うデータ領域などを置きます。 プロセスに割り当てられるメモリというのは、1つの巨大なのっぺらな配列みたいなものです。サイズも決まってます。64bit OSなら2^64 byteです。 0 2^64 +--------------- ----+ | | | | | ~~ | | +--------------- ----+ これは仮想的なメモリなので実際の物理メモリに2^64 byteの配列がドンと確保される訳

    メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog
  • Javaファイル関連メモ2(Hishidama's Java Files Memo)

    ファイル・ディレクトリ操作2 Javaのファイル操作クラスは、JDK1.7(Java7)で新しいものが導入された。(通称NIO2(New I/O 2)。自分はニオツーって呼んでる) →旧ファイル操作 Filesクラスでファイルのコピーや移動などを行うことが出来る。 また、ファイルやディレクトリーの場所を表すPathというインターフェースが新たに設けられた。 Path java.nio.file.Pathは、ファイルやディレクトリーの場所を表すインターフェース。 従来はjava.io.Fileクラスがその役割だった。 import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; FileSystem fs = FileSystems.getDefault(); Pat

    HHR
    HHR 2017/04/11
    nio あるディレクトリのファイル一覧取得をStreamでやるとか