あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。
あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。
この記事はSVS403 Best practices for AWS Lambda and Javaのセッションレポートです。 AWS Lambda上でのJavaプログラムのコールドスタート問題をJVMやLambdaの詳細な仕様に基づいて高速化していきます。 SVS403 : Best practices for AWS Lambda and Java はじめに この記事はSVS403 Best practices for AWS Lambda and Javaのセッションレポートです。 スライドと動画はそれぞれ下記で公開されています。 スライド 動画 セッション概要 In this session, we follow a customer’s journey as they optimize an AWS Lambda function written in Java to meet
IT系の勉強会行ってきた Advent Calendar 2019 - Adventar の3日目 未だにSpringの案件をやったことがないけど何とか生きています。 いつか触ることになるSpring案件の為に準備を続けます。 JavaORマッパー選定について RDBにアクセスするにはJDBC JDBC系:薄くラップ Spring JDBC, Apache Commons DbUtils, sql2o SQLは別途ファイルを作成 MyBatis, Doma, Mirage SQL, jdbi クラスやメソッドで実行するのでコンパイルが効く jOOQ, DBFlute, 他にも大量(Reladomo, Querydsl, Ebean, Speedment, Jinq, ) ORマッパー系、JPA:リレーション重視、SQL自動発行 安牌ならSpring JDBC or MyBatis 早わかり
javaのvarをどう使うかについて何か良い資料無いかな、とぐぐってたら本家にあったので読んで訳した。とはいえ、ごく当たり前のことで、まとめれば、極めて狭いスコープかつ変数名は可読性を損なわないように、プラスでジェネリクスとかダイヤモンド演算子とかリテラルとかの注意事項が少々、といったところか。 特記事項としてはIDE以外でも読めるように、のくだり。これは現在でも起こる問題で、たとえば、ぐぐって出てきたjavaのサンプルコードでクラス名が欠落しているが、正にそのクラス名が知りたい、といったケース。varはそれに拍車をかける可能性が高いので、その場合は注意しないといけない。 https://openjdk.java.net/projects/amber/LVTIstyle.html Local Variable Type Inference: Style Guidelines Stuart
考慮する点 成果物のデプロイ ビルドの成果物(artifct)をアップロードすること。アップロードと公開は分けて考えることに注意。デプロイ先にはいくつか候補がある: GitHub Packages (旧GitHub Package Registry) Maven Central Repository Docker HubなどのDocker Registry GitHub Packagesはコンテナも.jarもまとめて置けるが、コミュニティ標準の場所ではないので利用する際にひと手間必要になる。プライベートプロジェクトの場合は積極利用することになりそう。FOSSなら基本的にMaven Centralに置くことになる*1。プロジェクトによっては.jarファイルとしてではなくコンテナとしてデプロイすることもあるだろう。 リリースノートの作成 CHANGELOG.mdやsrc/site以下のファイル
個人的なメモなので、雑に適当に追加されていくかもしれないし放置されるかもしれない Arrays.asListよりもList.of JDK9以降では、Arrays.asListよりもList.ofを使うほうがいいです。 Arrays.asListが返すListは単に配列のラッパで、サイズ固定だけど要素の変更が可能です。一方、List.ofが返すListは要素の変更もできずimmutableになります。 n -> new int[n]はint[]::new これ、なかなか謎構文に見えるけど、そういうもんです。 new String(data)がString::newと書けるのと同じで。 FunctionalInterfaceのフィールドを使わない
ヌーラボでScalaを書くRubyistの谷本です。ヌーラボでは、Backlogの開発を担当しており、最近ではBacklogをJavaからScala / Play Frameworkに移行するプロジェクトのメンバーでした。 BacklogのPlay化プロジェクトでは、OutOfMemorryError(以下、OOM)の発生やCPU使用率とロードアベレージが上がったままという、Java Virtual Machine(以下、JVM)上で動くBacklogのパフォーマンスに関する問題に対処すべく、何度かHeap/Thread dumpを見る機会がありました。 私がPlay化プロジェクトで取り組んだパフォーマンス改善の知見や経験をもとに、本記事では「JVMで起こったパフォーマンスの問題の切り分け方」についてお届けします。 はじめに 本番環境でしばらく動かしていると、コード自体は正しく実行できるけ
2017年9月に登場したJava 9以降、Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるメジャーアップデートが行われています。Java 13は、今年3月に登場したJava 12に続くメジャーアップデートです。 Java 13のおもな新機能は、Application Class-Data Sharing機能を拡張した「Dynamic CDS Archives(JEP 350)」、ZGCガベージコレクタを改善し使われていないヒープメモリを返却する「ZGC: Uncommit Unused Memory(JEP 351)」、Project Loomの一部として既存のSocket APIを再実装した「Reimplement the Legacy Socket API(JEP 353)」、Switch式を可能にする「Switch Expressions(JEP 354)」(プレビュー)、J
最近でてきたフレームワーク、Helidon、Micronaut、Quarkusのクイックスタート、Native-Imageをまとめて試しましょう。 準備 SDKMANインストール 今回はSDKMANで環境を作っていきます。 https://sdkman.io/ コマンドラインで次のコマンドを実行します。Windowsの場合はCygwinかWSLで。 $ curl -s "https://get.sdkman.io" | bash ターミナルを開きなおすか次のコマンドを実行するとSDKMANが有効になります。 $ source "$HOME/.sdkman/bin/sdkman-init.sh" JDKインストール 今回はnative-imageまで使うのでGraalVMを使っておきましょう。 $ sdk use java 19.1.0-grl native-imageの準備も行います。Cy
案外詰まったので備忘用に残します。 やること IDを3種類持つオブジェクトについて、以下のようにソートします。 「id1 -> id2 -> id3」の順でそれぞれソートする ソートは全て昇順(NaturalOrder)で行う ただし、全てのソートでnullは最後とする ソース // import類 import static java.util.Comparator.comparing; import static java.util.Comparator.naturalOrder; import static java.util.Comparator.nullsLast; /* 略 */ static void sortIdObject(List<IdObject> idObjects) { idObjects.sort( comparing(IdObject::getId1, nul
ラムダ式とStream APIで学ぶモダンJava ― 関数型を取り入れて変化するJava言語の現在 20年以上の歴史を持つJava言語ですが、近年は関数型を取り入れるなど大きく変化し、リリースサイクルも格段に短くなってますます進化しています。モダンなJavaプログラミングで必要となるラムダ式とStream APIについて、谷本心(cero_t)さんによる詳細な解説です。 1996年にJava 1.0が登場して、もう20年以上がたちました。この間、Javaにはさまざまな言語機能やAPIが追加され、変化し続けています。 これだけ長い歴史を持つプログラミング言語ですから、利用者が多かったり、フレームワークやライブラリが充実していたりする一方で、書籍やWebに掲載されている情報が少し古かったり、研修で学ぶJavaが最新の動向を踏まえていなかったりするなど、長い歴史を持つが故の問題もあります。 特
Linuxの業務システムから「このExcelシートと同じレイアウトで帳票を印刷してください」に対応できるJavaライブラリが登場[PR] 現在ではLinux OSのうえで多くの業務システムが開発され、稼働しています。 一方、経理部門や営業部門などの現場ではさまざまな数字がWindows上のExcelで処理され、お客様へ提出する見積書や請求書など多数の帳票もExcelベースで作成、活用されているのが現実です。 それゆえに、業務システムの帳票印刷に対して現場のスタッフから「このExcelシートと同じレイアウトにしてほしい」と要望が寄せられることは、しばしばあることでしょう。 しかしLinux OSを用いて開発、運用されている業務システムで、どうすればExcelシートと同様のレイアウトを持つ帳票印刷を実現できるでしょうか? それを簡単に実現するのが、アドバンスソフトウェアが提供するJavaライブ
TL;DR jOOQで自動生成したO/Rマッピング用のJavaソースコードは、git管理してはいけない。 .gitignoreの対象にしておきましょう。 さもないとチーム開発のときにコンフリクトが起きやすくなり、DBの変更(テーブルやカラムの追加、変更、etc)に強いというjOOQのメリットを生かせなくなります。 ローカル開発環境のセットアップ、つまりDocker, gradle-jooq-plugin, flyway-gradle-pluginをきちんと使えば上記はラクに実現可能 ついでにDDD(ドメイン駆動設計)的な意味では、jOOQで自動生成したエンティティクラスをそのままドメインクラスとして使うのは悪手。面倒でも自作したドメインクラスに値を詰め替えましょう。 サンプルコードはこちら なお、jOOQの読み方は「ジューク」です。 Detail 2018年12月のJJUG-CCC(日本J
ドメイン駆動開発について ドメイン駆動開発はその名の通り、単なる実装パターンではなく開発要員以外のメンバーをも巻き込んだ開発手法である。 なぜ 3 層に分割するのか ドメイン駆動開発の設計では以下の 3 層に分けてソフトウェアを設計せよとされている。 アプリケーション層 ドメイン層 インフラ層 なぜこのような分割をするのか。突然モバイルアプリ版の開発が始まるかもしれないし、突然 DB が RDB ではなくなるかもしれないからである。 そのような場合に同じドメインのソフトウェア間で再利用できるものがドメイン知識であり、これを含んだものがドメイン層にあたる。 アプリケーション層 メイン関数 アプリケーションサービス (セッション管理など) コントローラー ビュー, メールのテンプレートなどのプレゼンテーション ビュー用の値オブジェクト, DPO ドメイン層 ドメインサービス エンティティ 値オ
あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く