2025-03-24 関ジャバ'25 3月度 https://kanjava.connpass.com/event/345530/ SpeakerDeckにあげたら9ページ目だけ文字が消えました。 なんでだろ?せろさんのポスト貼ったから? 心の目で見てください。
2025-03-24 関ジャバ'25 3月度 https://kanjava.connpass.com/event/345530/ SpeakerDeckにあげたら9ページ目だけ文字が消えました。 なんでだろ?せろさんのポスト貼ったから? 心の目で見てください。
背景 javaのログ出力ライブラリ、log4jとかslf4jとかよく見るけどなんとなくでしか使っていなかったので調べてみた。 とりあえず、めちゃくちゃややこしい。 先にまとめ ログライブラリは、interfaceの役割を持つもの(ファサード)と実際のログ出力を実行するもの(実装)に大別される slf4j, log4j2(のlog4j-api), commons logging は ファサード logback, log4j2(のlog4j-core), log4j, java util logging は 実装 ファサードはログ出力APIだけを提供し、実際のログ出力は実装ライブラリに移譲する slf4j, log4j2 は他のログライブラリ経由で送られるログを乗っ取る仕組みを持つ 現在は slf4j + logback が広く使われており、対抗馬としてlog4j2(log4j-api + l
かつて、Log4jというロギングライブラリがありました。 最強でした。1999年のお話です。 ロギングの大切さとLog4jの素晴らしさが見直され、Java標準にjava.util.loggingというAPIが追加されました。2002年のお話です。 java.util.loggingはLog4jを参考に作られましたが、ところどころ使いづらかったため、「標準」という武器をもってしても、Log4jに置き換わることはできませんでした。そのため、Javaの世界には2つのロギングライブラリが残ってしまいました。 Maven1.0が2004年にリリースされ、人々はOSSライブラリを組み合わせてアプリケーションを作るようになりました。 ところが、ロギングライブラリが2つあったため、Log4jを使っているライブラリと、java.util.loggingを使っているライブラリが混在してしまい、アプリケーション
Java × サーバーレスは SaaS バックエンドとして通用するのか ? ~ スタートアップの実戦記録 ~ 2023-10-03 | Author : 近藤 徳行 (株式会社Conoris Technologies, CTO / CPO) 様々な分野の技術革新が日々起き続けていますが、中でもサーバーレス技術の進歩は目覚ましいものがあります。しかし、残念ながら Java 言語に関して言えば、その言語特性からこのサーバーレスの波に一歩乗り遅れている感が否めませんでした。Java × サーバーレスの構成を試みたが、うまくいかなったという方も多いのではないでしょうか ? ですが AWS re:Invent 2022 の SnapStart の発表 で状況は大きく変わり、用途こそ検証する必要性はあるもののいわゆる Web アプリケーションとしては低コストで運用が可能であるということを自社のサービス
MicroProfileは、2016年9月に誕生したエンタープライズマイクロサービス向けのプラットフォームです。 JavaEE(現JakartaEE)の仕様をベースとしつつも、マイクロサービスアーキテクチャに親和性の高い機能(JAX-RS, CDI, JSON-P等)に限定しています。 ここでは、そんなMicroProfileの導入や各機能の利用方法をご紹介します。 Javaによるエンタープライズ開発のフレームワークと言えばSpring Frameworkがデファクトで鉄板となっているこの昨今、唯一のメリットは標準と言う錦の御旗だけに見えるJava EEに起源を発するMicroProfileに注目し、そして敢えて世間の逆を本気で行き、結果「マイクロサービスのバックエンドならSpringよりもイケてるね!」の境地に達したSpring好き(だった)エンジニアがMicroProfileへの知見や
Javaのクラス名の表現方法で 「全部同じじゃないですか」 「ちがいますよーーっ」 「これだからしろうとはダメだ!もっとよく見ろ!」 をやっている🤔— なぎせ ゆうき (@nagise) April 14, 2020 Java言語を扱っていると何通りかのクラス名の表記法を見ることがある nagise.sample.Hoge.Piyo nagise.sample.Hoge$Piyo nagise/sample/Hoge$Piyo [Lnagise.sample.Hoge.Piyo これらの違いは何なのか。 Javaのクラス名関連の専門用語を調べ直してみた。 用語 日本語 概要 Identifier 識別子 識別に用いるもの全般を指した抽象度の高い表現 Class Name クラス名 一般に言うクラス名。比較的曖昧な表現。文脈によってはInterfaceも含む。ネストしたクラス、内部クラスの
はじめに 先日、JakartaOne Live Japan 2022というイベントで登壇させていただく機会を頂きました。 QuarkusやHelidonのような新しめのEEフレームワークがこれまでのPayaraやWebLogicとどう違うのか? CloudRunのようなサーバレス環境でMicroProfileのどの機能が効果的に働くのか? という点を最近のWeb開発周りのトレンドと絡めながら話ました。上記のようにアーカイブ動画も公開されていますが、せっかくなのでQuarkusがサーバレス環境で実行に最適化されるまでの周辺事情等をまとめたいと思います。Javaだけに留まらず最近の環境事情の整理にも役立つかと思います。 TL;DR Quarkus/Helidonは軽量で高速な新しいEEフレームワーク コンテナや、サーバレス、クラウドネイティブなど最新のトレンドに基づいた設計 GCPのCloud
オブジェクト指向の最大の特徴は、モジュールと型を一体に扱ったことです。 メイヤーの本では次のような「オブジェクト指向の基準」があげられています。 クラスが唯一のモジュールでなければならない すべての型はクラスに基づいていなければならない つまり、クラスはモジュールであり型であるということです。 ここで、モジュールにとって必要な、クラスで実現できる機能は、モジュール間で異なる部分だけをそのモジュールで実装するという差分プログラミングです。 型に求められるのは、データの分類です。 ということは、オブジェクト指向は差分プログラミングとデータの分類を同時に扱おうとしていたということになります。 けれども、データの分類と差分プログラミングを同時に行うのは大変です。 「できらぁ!データの分類と同時に差分プログラミングして、いいソフトウェアができるっていったんだよ!!」 というのがオブジェクト指向だった
Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型は本エントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない
要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事でJava + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある
OOMKillerの殺意 顧客EC2のTomcatがアクセスの無い早朝にもかかわらずOOMKillerに突然殺されてしまったので、調査した顛末をたぶん同じような問題に直面されている方もおられるかと思いますので備忘録として記載します。 Javaヒープのチューニングにも多少役立つかと思います。 (この記事はJava8が対象となります。) OOMKillerとはOut of Memory時に、サーバ全体を守るためにメモリーを消費しているプロセスを停止するLinuxの標準機能です。 そのOOMKillerになんとTomcatが突然殺害されてしまいました。 問答無用の辻斬り状態です。 早朝ですのでアクセスログには何も記録されておらず、catalina.outには OpenJDK 64-Bit Server VM warning: Setting LargePageSizeInBytes has no
個人的なメモなので、雑に適当に追加されていくかもしれないし放置されるかもしれない 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のフィールドを使わない
2017年4月から人生初めての新人研修講師を務めさせて頂くことになりました。プログラミング入門がテーマです。 先方は昨年までJavaでカリキュラムを組んでいたんですが、JavaをやめてPythonでやらせてもらえないかと提案し快諾頂きました。プログラミングの入門書を書いたから特に感じることなんですけど、Javaはプログラミングの初学者に向いていない言語だと思います。 クラスありきの言語設計 それがJavaの良いところでもあると思いますが、プログラミング自体が初めての方を対象に考えた場合、はじめの一歩として不適切だと感じます。 Hello Worldが重たすぎる お馴染みのHello Worldです。初めてのプログラミングで以下のコードを見たら、何のことやら分からないでしょう。 public class Test { public static void main(String[] args
はじめに PlayはTypesafe社が提供しているWebアプリケーションのためのフレームワークです。 他のフレームワークと同様、PlayもMVCアーキテクチャーを採用しているのですが、面白い点はModelとControllerの実装をJavaとScalaの2つから選べること。 「JavaとScalaの2つを提供しているんだったら何もJavaの作法に縛られることないよね」ということなのか、Playには、JavaでWebアプリケーションとなれば当然出てくるサーブレットやJSPといったJavaEEの概念モデルは一切なく、どちらかというと、Ruby on Railsのような軽量フレームワークとして実装されているようです。 長年Java一筋で、Webアプリケーションは基本サーブレット、次々と新しいフレームワークが出てもJavaEEの範疇で。。。そんな中、Railsの波にも乗ることができず、設定ファ
Playframeworkアドベントカレンダー1日目です。 @kara_dがお送りします。 Play Javaは変化しまくってきた バージョン1.x系から数えると、Play frameworkが世に出てもうすぐ5年になります。 その間にPlayはずいぶんとその姿を変えてきました。Javaで作られていたフレームワークはScalaで出来たフレームワークへと変わり、バージョン2.3からはコンソール起動時に使う「Play」コマンド自体なくなってしまいました。 Play 1のころからJava版を使い続けてきた人間としては、これら変化への対応が常に求められてきた5年間だったと言えるでしょう。 僕自身はPlayをベースにした開発にシフトして3年くらいになります。 バージョン間のマイグレーションは、小さなプロジェクトであれば、さほど大きな修正ではないのですが、Playのコアの機能をどっぷりと使ったプロジェ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く