タグ

programmingとjavaに関するhonamisのブックマーク (19)

  • Spring Bootの外部設定値の扱い方を理解する - Qiita

    今回は外部設定値(プロパティファイル、JVMのシステムプロパティ、環境変数などに定義した設定値)をSpring Bootがどのように扱うのか紹介したいと思います。 なお、前回紹介した「Spring BootのAutoConfigureの仕組みを理解する」でも外部設定値を参照した条件付きBean定義の仕組みがサポートされていたり、各AutoConfigure用のコンフィギュレーションクラスの中から外部設定値を参照してBean定義していたりします!! 前提バージョン Spring Boot 3.1.1 (1.4.1.BUILD-SNAPSHOT→2.4.5) Spring Framework 6.0.10 (4.3.3.BUILD-SNAPSHOT→5.3.6) 変更履歴 [2023/6/25] 投稿から7年くらいたっても一定のViewが継続してあるので、最新のSpring(Spring Bo

    Spring Bootの外部設定値の扱い方を理解する - Qiita
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
  • [Java]iciqlで簡単DBアクセス[ORマッパー] | DevelopersIO

    JavaアプリでORマッパーを使う 先日、ちょっとしたJavaアプリを作る必要があり、DBアクセス方法をどうしようか検討してました。 最初はPreparedStatementつかって自分でSQL組み立ててもいいかなあと思ってたんですが、 仕様を確認したらそこまで楽なDBアクセスでないのでNG. 次にSpring DataとかhibernateとかiBATISとかのORマッパーを使おうと思ってたんですが、 DBアクセスをしたいだけなのに依存ライブラリがいっぱいあったり設定ファイル用意したりして 面倒だったので、これもヤメました。 で、いろいろ探してみた結果、簡単につかえそうなiciqlというORマッパーがあったので、紹介します。 iciqlの特徴は以下のとおり。 単一のjarで提供される 設定ファイルなしで使える DBからモデル生成できるツール付き xmlとかでいちいち設定ファイルを書かずに

    [Java]iciqlで簡単DBアクセス[ORマッパー] | DevelopersIO
  • forEach書いたら負け、for文禁止 - torutkのブログ

    日は日Javaユーザーグループ(JJUG)主催のクロスコミュニティカンファレンス2014春に参加してきました。今日の日記は、参加内容のまとめではなく、参加して得たことやそれをきっかけに考えたことなどをだらだらと書き連ねます。 Java SE 8では、forEach書いたら負け、for文禁止 日記のタイトルは、午前のセッション「K-1 詳説 Java SE 8 – CCC Edition」で出た話題です。手続き的なロジックを書いて、ネストが深く制御構造が複雑になってしまう人向けにはJava SE 8で導入されたラムダ式とStream APIを使って、内部イテレータと関数型プログラミングのエッセンスを取り入れた書き方をするといいよ、という話から出た言葉です。 実は昨日開催したJava読書会(「Java 8 Lambdas」を読む会)でも、「for文は禁止だ!」という話題が出てました。for

    forEach書いたら負け、for文禁止 - torutkのブログ
  • Javaのパフォーマンスについての9つの誤信

    JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ

    Javaのパフォーマンスについての9つの誤信
  • Java8のStreamを使いこなす - きしだのHatena

    さて、Java8で関数型っぽいことをやって遊んでみたわけですが、実際はそんな書き方しませんよね。 Java8で実際に使うのは、Streamです。 ということで、Streamの使い方をひととおり見てみます。 ※5/17 仕様変更があったので、修正しました 基 まずは、Iterableインタフェースに用意されたforEachメソッドを見てみましょう。 List<String> names = Arrays.asList("hoge hoge", "foo bar", "naoki", "kishida"); names.forEach(s -> System.out.println(s)); これで次のように表示されます。 hoge hoge foo bar naoki kishida いままでの拡張forだと次のように書いてました List<String> names = Arrays.a

    Java8のStreamを使いこなす - きしだのHatena
  • ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ

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

    ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ
  • Java7 で String クラスがリファクタリングされていました - 地平線に行く

    先日、ついに JavaSE 7 がリリースされました! そこで、早速ダウンロードして、Java7 のソースコード(src.zip)を Java6と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。 そこで、そのうち String クラスについて調べてみました。 splitメソッド - 独自処理による高速化 いままでは、String#split(〜) は正規表現 (Patternクラス) に処理を移譲するだけでした。 // (Java6) Stringクラス、2291行目〜 public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); } それが、単純な区切り文字なら正規表現を使わないで独自に処理をす

    Java7 で String クラスがリファクタリングされていました - 地平線に行く
  • 業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して

    Java: The Good Partsののタイトルに触発されて、逆にJava言語の使いにくい部分をいくつかピックアップしてみました。Java EEなどの業務系のアプリケーションプログラマーの視点で書いていますので、別の立場ではここで指摘している事項が必ずしもBad Partではないという指摘もあるかもしれませんし、他にもいろいろなポイントがあると思いますが、とりあえず、私の独断で思いついたものを10個説明したいと思います。 1.標準APIのチェック例外が扱いにくい Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指してでも取り上げましたが、Bad Partの第一番目として標準APIのチェック例外が扱いにくいという点を指摘させていただきたいと思います。チェック例外については、理屈上コンパイラーによって例外の処理をプログラマーに強制させることができるす

    業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して
  • Java: The Good Parts - 矢野勉のはてな日記

    2/23に「Java: The Good Parts」というがオライリージャパンから発売されます。配は22日らしいので、早いところなら明日には売ってるのかもしれません。O’Reilly Japan - Java: The Good PartsJava: The Good Parts作者: Jim Waldo,矢野勉(監訳),笹井崇司出版社/メーカー: オライリージャパン発売日: 2011/02/24メディア: 大型クリック: 10回この商品を含むブログ (8件) を見る翻訳は笹井崇司さん、監訳は私が行いました。目次は次のような感じです。 型システム 例外 パッケージガベージコレクションJava仮想マシンJavaDoc コレクション リモートメソッド呼び出し(RMI)とオブジェクトシリアライゼーション 並行処理 開発者のエコロジー目次をみれば分かるように、JavaといってもJavaに付

  • Javaバイトコード入門

    1. わかる !Java バイトコード ― 30 分でわからない ?Java バイトコード入門 筑波大学大学院 システム情報工学研究科 博士後期課程 水島宏太 2. 自己紹介とか Twitter: @kmizu はてな : id:kmizushima github: http://github.com/kmizu/ 大学院生 構文解析の研究とかやってます 特に Packrat Parsing Scala 好き Scala の布教活動をあちこちでやったり JVM 好き JVM 上で動作する言語処理系 Onion を開発 3. Agenda プログラミング言語としての Java バイトコード マシンモデル 型システム 命令セット クラスファイルベリファイア ベリファイアがはじく操作の例 簡単なプログラムを javap で逆アセンブルする 役に立つかもしれない javap のオプション解説 クラ

    Javaバイトコード入門
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • Java 7における5つ(かそこいら)の変更点確定版 - uehaj's blog

    Java 7の最終変更点が確定したとのことで、記事を翻訳してみました。 Project Coin: The Final Five (Or So) まず最初に、Project Coinへ興味深い提案をお送りいただいたみなさま、思慮深いコメントをくださった方々、そしてJavaプログラミング言語を発展せしめんと欲するまさしく活力のあるコミュニティの皆様にお礼申し上げます。 これ以上の波乱もなく、JDK7に含められることが決定した最終的なProject Coinの変更は以下の通りです。 Switch文中での文字列の使用 自動的なリソース管理 ジェネリックなインスタンス生成のための型推論の改善(ダイアモンド ※注1) 単純化された可変引数メソッドの呼び出し より良い整数型リテラルのための、オムニバス提案(多くを含んだ包括的な提案) コレクションのための言語サポート JSR292のための言語サポート

    Java 7における5つ(かそこいら)の変更点確定版 - uehaj's blog
  • InfoQ Japan: 最新技術を追い求めるデベロッパのための情報コミュニティ

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    InfoQ Japan: 最新技術を追い求めるデベロッパのための情報コミュニティ
  • 全Eclipse Java プログラマーに捧げる Eclispe 徹底活用術完全版〜Eclipseに空気を読ませて楽する術〜 - Yamashiro0217の日記

    この記事は、http://d.hatena.ne.jp/higayasuo/20090612/1244772658 の「Ctrl+1とCtrl+Spaceうんぬん」の話にインスパイアされて書いた。Eclipse可愛いよ。Eclipse。 記事長いから、さくっと読み飛ばして、アニメーションgifがあるところから読んでも十分訳にたつと思う。 あと、新人さんとかに写経させるのもいいかも。というか、半分ぐらいうちの新人に勉強のためと思って書いたから。で、実際に写経させて役にたった。 Java は Eclipse などの IDE も含めて言語というか、環境というか…だと僕は思ってる。Commons, Maven なども含めたい(まぁ、そのあたりは、CPANも含めてperlだろ。とか、これは否定する人だらけだろうけど、Railsrubyということを言う人もいるよね)。 少なくとも僕は、Eclipse

    全Eclipse Java プログラマーに捧げる Eclispe 徹底活用術完全版〜Eclipseに空気を読ませて楽する術〜 - Yamashiro0217の日記
  • 互いに関連のないオブジェクトを1つのインターフェースにまとめて共通的にアクセス可能にするライブラリを作ってみた - 矢野勉のはてな日記

    Javaもともとやりたかったことは、 あるオブジェクト(インスタンス)がすでに手元にある そのオブジェクトのクラスは何らかの理由で継承不能 そのオブジェクトの一部メソッドをオーバーライドしたい そのオブジェクトにメソッドを1つ足したいという、JavaScriptならすぐにできちゃうことがしたかった。で、これって、オーバーライドしたいメソッドと、追加したいメソッドだけを持ったあるオブジェクトAを用意して、メソッド呼び出し時に該当メソッドの時だけAに委譲しちゃえばできるよね、と思った。他のメソッドはすべてもとのオブジェクトに委譲する。 で委譲コードを書いてみても、すんごいめんどくさい。たくさんのメソッドを定義して、ただ委譲するだけのコードをかかないといけない。でCGLibあたりにそういうのがあるだろうと思って見てみたのですが、どうもないみたい。なんかありがちな要望だと思ったんですが、もうちょっ

  • Life with Cygwin

    沖ソフトウェア株式会社は、沖通信システム株式会社および株式会社沖インフォテックと平成22年10月1日をもって合併いたしました。新会社名は、株式会社OKIソフトウェアとなります。3社が行っております事業は新会社にて従来通り継続いたします。

  • Java におけるコード進化パターン (Code Evolution Patterns in Java)

    Java におけるコード進化パターン (Code Evolution Patterns in Java) asato shimotaki <asatohan at gmail.com> 最終更新日 : 2009/6/21 (2004/4/22 より) [...] For twenty years, I spent two or three hours a day looking at pairs of things -- buildings, tiles, stones, windows, carpets, figures, carvings of flowers, paths, seats, funiture, streets, paintings, fountains, doorways, arches, friezes -- comparing them, and asking my

  • ジェネリック: Java vs C#

     ジェネリック: Java vs C# 概要 2005 年初頭に公開された Java 言語仕様第 3 版 (開発実行環境は 2004 年秋に先立って公開されていた) と 2005 年 6 月に ECMA に承認された C# 言語仕様第 3 版 (開発実行環境は 2005 年末に公開された) では、共にジェネリック (ジェネリックス、ジェネリクス、総称: generics) という新しい概念が導入され、文法もそれに伴って変化している。 Java と C# はどちらも静的な型付けを行うオブジェクト指向プログラミング言語であり、C 言語を基にした 似たような文法をしている。 この記事では、Java 言語のジェネリックと C# 言語のジェネリックを、その機能や文法の違いを中心に比較する。 ジェネリックな型 ジェネリックな型は、どちらの言語でも山型の括弧を使って表される。ジェ

  • 1