タグ

Javaに関するpaulowniaのブックマーク (483)

  • Java のpublic static void main なくなるってよ。 - Qiita

    そもそもなに? Javaプログラムのエントリポイントは、public static void main(String[] args)と相場が決まっています。いっぽうでツイッター界隈ではJava 21の最新機能として必ずと言っていい程「今後はstatic要らないんだよ」これが出てきます。 短期間に二度三度出てきたので、気になって調べてみました。すごく気になったのは static の記述自体の廃止 これは目も当てらません。ちょっとjava使うの辞めたい気持ちになります。なぜなら、javaバイトコード仕様自体が変更になるということは過去資産が使えなくなる可能性や、今後のマイグレーション案件に多大な影響を与えるからです。。ほんとまずい。。 調べてみましょう こういう時は1次情報をきちんと見ないといけませんね。JDKの一次情報といえば OpenJDKの公式サイト ですね。みてみましょう。Featur

    Java のpublic static void main なくなるってよ。 - Qiita
  • 【ネタ】コメントだけしか書いていないのに「Hello, world!」と表示されるJavaプログラム - Qiita

    これはJavaでポインタで使えるというネタから着想を得たプログラミングネタです。 厳密には 「コメントだけ書いてあるようにしか見えない」 です。 コメントだけしか書いていないのに「Hello, world!」と表示されるJavaプログラム % java --version openjdk 16.0.2 2021-07-20 OpenJDK Runtime Environment Microsoft-25298 (build 16.0.2+7) OpenJDK 64-Bit Server VM Microsoft-25298 (build 16.0.2+7, mixed mode) import java.util.*; public class Main { public static void main(String[] args) throws Exception { //\u000a

    【ネタ】コメントだけしか書いていないのに「Hello, world!」と表示されるJavaプログラム - Qiita
  • -verbose:class オプションを使ってLog4j利用の有無、Log4jを利用しているクラスを調査する | yusuke.blog

  • [速報]10年にわたる著作権訴訟でGoogleがオラクルに勝訴、米連邦最高裁判所で判決。Java SEのコードのコピーはフェアユースの範囲

    [速報]10年にわたる著作権訴訟でGoogleがオラクルに勝訴、米連邦最高裁判所で判決。Java SEのコードのコピーはフェアユースの範囲 オラクルがGoogleに対して、Android OSがJavaの著作権を侵害しているとして訴えていた裁判で、米連邦最高裁判所はGoogleが著作権侵害をしていないとの判断を示し、Googleが勝訴しました。 以下は米連邦最高裁判所の動向を伝えているSCOTUSblogのツイートです。 BREAKING: In major copyright battle between tech giants, SCOTUS sides w/ Google over Oracle, finding that Google didnt commit copyright infringement when it reused lines of code in its An

    [速報]10年にわたる著作権訴訟でGoogleがオラクルに勝訴、米連邦最高裁判所で判決。Java SEのコードのコピーはフェアユースの範囲
  • TOMCAT殺害事件 - Qiita

    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

    TOMCAT殺害事件 - Qiita
  • 18分59秒をめぐって日本標準時の歴史をひもとくことに - エムスリーテックブログ

    この記事は エムスリー Advent Calendar 2018 12日目の記事です。 こんにちは。エムスリー エンジニアリンググループの三浦(@yuba)です。基盤開発チームというところで各サービスチーム共用のシステムの開発保守に携わっており、そこで見つけた面白い動作を掘っていったら意外な知識にたどり着いたという話をいたします。 化けた日付はどこから来た? あるサービスの管理画面の動作を検証していたときのことです。バリデーションの振る舞いを確かめるためにいくつかテストケースを作りながら実際の動きを試していたところ、不思議な現象を見つけました。 次のように日時入力をするところで年の欄を空のままにして送信したところ⋯ 次のようにおかしな日時が設定されたのです。 0013年? 18分59秒? 入力した覚えのない数字が3つも紛れ込んでいます。 これが C で書かれたプログラムなら何か不定値を拾っ

    18分59秒をめぐって日本標準時の歴史をひもとくことに - エムスリーテックブログ
    paulownia
    paulownia 2018/12/12
    へえええええ
  • Graal VM の native image を使って Java で爆速 Lamdba の夢を見る - Qiita

    はじめに 前日は mike_neck さんの AWS Lambda のカスタムランタイムにて Java のカスタムランタイムで関数を動かす でした。 偶然にも(?)今日も引き続き、 Lambda Custom Runtime で Java を動かす話です。 AWS Lambda 提供する言語の一つに Java があります。 Java はホットスタートの処理速度は速いもの、コールドスタートでは 5 から 10 秒ほど要することがあります。 また、メモリ消費量も多く LambdaJava の組み合わせは速度重視の場面では使われていないように思います。 2018年の re:invent で、 AWS Lambda の Custom Runtime が発表されました。 お作法に従いさえすればどのような言語でも Lambda として実行可能になりました。 さらに近年 Java 界隈では新しい

    Graal VM の native image を使って Java で爆速 Lamdba の夢を見る - Qiita
  • ログレベルが突然変わる謎の事象を追う ~ あるOSSサポートエンジニアの1日 - Qiita

    Logger.getLogger("test").setLevel(Level.OFF); これは、testという名前のロガーのログ出力を抑止することを目的としたコードです。 ここで使っているLoggerはJava標準のjava.util.logging.Loggerで、getLogger()は引数で与えられた名前のロガーインスタンスが既に生成されていればそれを返し、無ければ新たに生成するメソッドです。setLevel()は、そのロガーのログレベルを設定します。引数はLevel.OFFなので、ログ出力を無効にします。 この記事は、上記コードが引き起こした問題についての実話です。 このコードが起こした問題 ある日、私のもとに至急の調査依頼が来ました。その内容は、「Tomcatの再起動をきっかけに、Webアプリケーションがボディの無い正常応答を返すようになった」というものでした。 その後の再起

    ログレベルが突然変わる謎の事象を追う ~ あるOSSサポートエンジニアの1日 - Qiita
  • JavaCardの世界 - builderscon tokyo 2018

    Abstract みなさんはJavaCardをご存知でしょうか? ご存知でなくとも、現代の文明人であれば間違いなく使っている技術です。例えば皆さんの携帯電話に入っているSIMカードではJavaCardが動いていますし、クレジットカードJavaCardで動いています。嗚呼Javaからは逃げられない…… さてJavaCardとは一体なんなのか。一言で言うなればJavaが動くカードです。そのままですね。UICCと呼ばれるチップコンピュータの上でJava Appletをセキュアに動かすためのプラットフォームこそがJavaCardです。何気なく使っているクレジットカードに乗っかっているあの金ピカのパーツは実はコンピュータで (もちろんCPUや永続化メモリが含まれています) 、しかもJavaが動いているのです! 興奮をおさえきれません!! JavaCardはJavaCard SDKと呼ばれる専用の開

    JavaCardの世界 - builderscon tokyo 2018
  • タイムゾーン呪いの書 - Qiita

    コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日に住んで日仕事をしていると国内時差もなく1 夏時間もない2 日標準時 (Japa

    タイムゾーン呪いの書 - Qiita
  • 我々はいかにして技術選択を間違えたのか? 2016 - Cybozu Inside Out | サイボウズエンジニアのブログ

    どうも!アプリケーション基盤チームの横田(@yokotaso)です! kintoneなどで利用していたJavaフレームワークのSeasarのEOLに伴い、S2Daoからの脱却を試みたのですが、パフォーマンス問題や障害を発生させてしまうなど問題を多々発生させてしまいました。 同じ過ちを繰り返さないという強い決意のもと、今回の失敗をブログで公開いたします。 失敗をあえて公開する点で斬新かつ濃いブログ記事となっております! 失敗体験の公開は恥だが役に立つ! 移行先の選定の失敗 移行先として選定したプロダクトは Hibernate*1です。 Hibernateを選んだ理由としては Spring Framework を選定した Spring Frameworkで Interface + アノテーションでプログラミングするならSpring Data JPA が有力 JPAに準拠したのORMの中でも、H

    我々はいかにして技術選択を間違えたのか? 2016 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Undertow · JBoss Community

    Undertow is a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO. Undertow has a composition based architecture that allows you to build a web server by combining small single purpose handlers. The gives you the flexibility to choose between a full Java EE servlet 4.0 container, or a low level non-blocking handler, to anything in between. Un

  • 作って理解するDIコンテナ - きしだのHatena

    DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String

    作って理解するDIコンテナ - きしだのHatena
  • 試すのが難しい―機械学習の常識はMahoutで変わる

    ビッグデータ時代―なぜ、いま機械学習なのか Apache Hadoop(以下、Hadoop)の登場で、今まで捨てていたデータ、貯めるだけで処理しきれなかったデータを活用できるようになりました。 活用手段として最近とみに注目されている技術が「機械学習」であり、Hadoopの強みを生かし簡単に機械学習を行うためのライブラリが、「Apache Mahout」(以下、Mahout)です。 稿ではMahoutを動かしてみることで、機械学習の常識を身に付けます。 そもそも、機械学習とは? 機械学習とは、一定のデータをコンピュータ・プログラムに「学習」させ(すなわち、そのデータに潜むパターンや規則性を表す「モデル」を自動的に構築させ)、他のデータにそのモデルを適用すれば、あたかも人間のように複雑で柔軟な判断が行えるようにするという試みです。 機械学習をビジネスに活用した例は、レコメンド(ユーザーや商品

    試すのが難しい―機械学習の常識はMahoutで変わる
  • JJUG ナイトセミナーで Reactive Streams について発表しました - Okapies' Archive

    6月24日の JJUG ナイトセミナーで「Reactive Streams 入門」のタイトルで発表させて頂きました。最近話題の Reactive Programming、気がついたら一万人以上が署名している Reactive Manifesto、そして Java 9 で標準化という話が進んでいる Reactive Streams をまとめて俯瞰してみました、という感じの内容になっています。 かなり戦々恐々だったのですが、思いのほかご好評をいただきとてもとてもほっとしています。発表の機会を与えて下さった JJUG スタッフの皆様、会場をご提供頂いたオラクル様、発表を聴いてくださった参加者の方々、ありがとうございました。 発表でも触れましたが、"Reactive" という概念が何を指すかについては大きな混乱があり、様々な論者が異なる定義を提唱しているのが現状です。一方で、そうした定義の背景には

    JJUG ナイトセミナーで Reactive Streams について発表しました - Okapies' Archive
  • Javaで書くBuilderパターンのパターン - Qiita

    個人的にBuilderパターンはオブジェクトの生成制御や、ものによっては可読性が高くて好きなパターンなんですが、その実装には用途によっていくつかパターンがあるので、まとめてみました。 生成するオブジェクトの条件 クラス名:People フィールド:String name(必須), Integer age(必須), String hobby(オプション) 必須要素はnullを禁止 PeopleクラスはStringを返り値とするhelloメソッドを持つ 今回はBuilderパターンの比較のため、パターン上必要でない限りgetterなどのメソッドは省略 Native Builder Builderパターンではなく、ただのコンストラクタ。Builderパターンを使いたくなるのはこれをやりたくないからだけど、比較のために記載。 class People { private String name;

    Javaで書くBuilderパターンのパターン - Qiita
  • 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、

    恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Log4j 2にも採用されたLMAX Disruptorはなぜ狂ったように速いのか?

    LMAXという会社はおそらくFX業者で、筆者はLMAXの開発者の講演を、InfoQの動画で何度か見たことがあった。 彼らは非常に特異な集団で、さしずめ「Javaのスピード狂」という感じだ。 印象的なのは、シングルスレッドで仕事を片付けることを強調している点だ。 「Javaならマルチスレッドで並列処理すれば性能が出ると広く思われているが、我々の仕事においてはシングルスレッドが最速だ」というような主張を何度も見た。 ゴールドマンサックスといいLMAXといい、やはり多額の金が動く会社でガチでJavaをやっている連中はカリカリにチューニングするため、技術的には非常に面白い。 彼らがコアのライブラリをOSS化してくれるというのは、金融業界を否定的な目で見る筆者からすると複雑だが、悔しいことに参考になる。 LMAX DisruptorはJavaのライブラリだ。Producer/Consumerパターン

    Log4j 2にも採用されたLMAX Disruptorはなぜ狂ったように速いのか?
  • Java8で、Objectが持つメソッドについてはインターフェースでdefault実装をできないようにしている理由 - なみひらブログ

    背景Java8にて、インターフェースにdefaultメソッド(メソッド定義と実装)を定義できるようになりました。 しかし、その実装においてObjectクラスが持っているメソッド(toString()とかequals()とか)は、インターフェース内でdefault実装として定義できないようになっています。(コンパイルエラー「A default method cannot override a method from java.lang.Object」) 「なんでかなぁ~」と思ってちょっと調べてみたら、以下の記事を見つけました。 ちょっと要約ちょっと要約してみます。 #自分の解釈を一部入れています。 #英語に不自由のない方は上記を見てもらえればいいかと思います。 (質問者) defaultメソッドは、Javaの中で新しい良いツールだ。 しかし、私がインターフェースにtoString()のdef

    Java8で、Objectが持つメソッドについてはインターフェースでdefault実装をできないようにしている理由 - なみひらブログ
  • 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のブログ