タグ

programmingとJavaに関するvanbraamのブックマーク (25)

  • EclipseとOracle、javaxパッケージ名前空間と商標の扱いに関する合意を断念

    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が最近リリースされ、重要な変...

    EclipseとOracle、javaxパッケージ名前空間と商標の扱いに関する合意を断念
    vanbraam
    vanbraam 2019/07/24
    JCPにおけるJava EEの位置付け(openなのかclosedなのかが曖昧)という積年の問題が,ここにきて噴出してる感じ
  • Javaのパッケージ名の命名には2019年でも所持ドメインの逆順を使うべきなのか調べた - Qiita

    発端 Java6までは言語仕様の中に命名規約の章があったけどJava7からはなくなった。あとパッケージ名もドメイン名逆順にしろというのが、ローカルでの利用を意図してるなら単一の識別子だけでいいということになった。そのころからlombokみたいにプロダクト名だけのパッケージ名を見るようになった気がする — きしだൠ (@kis) 2019年1月22日 今までjavaパッケージの命名はドメイン名の逆順というのが通例だと思っていたが、たしかにそれに沿わないライブラリも特にScala系のライブラリで見ることが増えてきた。 そもそもこの命名規則は確かに衝突を避けるためには合理的ではあるもののコード中の記述量が増えるため後発の言語でもまったく真似されていない。 最近のJavaでより短いパッケージの命名が許容されるならとても嬉しいと思い、当にJavaのFQDN逆順命名規約は無視していいのか調べた。 調

    Javaのパッケージ名の命名には2019年でも所持ドメインの逆順を使うべきなのか調べた - Qiita
    vanbraam
    vanbraam 2019/03/06
    こういう調査は(自分含め)多くの人の不要な苦労を減らしてくれるのでありがたい;最初のツイートした人物は記事著者にお礼を言うべきだと思う
  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

    ざっくり言うと リスト構造のデータに対してランダムアクセスはしちゃだめだぞ。お兄さんとの約束だ! 発端 数年前に他部署の支援で作ったJavaのシステムに、ちょっとデカめのデータを突っ込んだらありえないほど遅いので助けてくれ、と連絡が入った。 まぁクエリとかインデックスをちょっと見れば直るっしょ・・・と鼻をほじりながら支援に向かった。 処理内容 遅い部分の処理は以下のようなものであった。 処理対象のデータをListで受け取る。 それをforループで1件ずつ前処理する。 処理結果をオブジェクトに格納し、ORマッパーでDBにINSERTする。 これだけ? そう、これだけだ。並列処理なんて高級なことはもちろんやってない。 インフラ調査 処理中のサーバのようすを調査する。今回のインフラは典型的な3層3サーバ構成。 WEBサーバはなにもかもが余裕。 APサーバではCPUを1つ使い切っている。 14コア

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
    vanbraam
    vanbraam 2018/02/19
    拡張for文で正解だけど,それがなかった時代でも普通にrecord.next()する案件だと思う;"ランダムアクセスしちゃダメ"というより,sequencial accessでいいのに無意味にrandom accessしてる例では
  • タイムゾーン呪いの書 - Qiita

    技術的な標準・規格 (TODO: IATA, Microsoft) tz database タイムゾーンに関する、ソフトウェア・エンジニアにとって最も標準的なデータが tz database (Wikipedia) でしょう。 "Asia/Tokyo" や "Europe/London" のようなタイムゾーンの名前は、この tz database のものです。 tz database のタイムゾーンは "/" の前の最初の部分に大陸名・海洋名を用い、続いて、典型的にはそのタイムゾーン内の著名な都市名・島名をその代表として名付けられています。21 国名は基的に使われません。22 "America/Indiana/Indianapolis" のように3要素で構成されるタイムゾーンも少数ながら存在します。 tz database はボランティアによってメンテナンスされています。タイムゾーンの情

    タイムゾーン呪いの書 - Qiita
    vanbraam
    vanbraam 2018/02/07
    割と知ってる話だったが,Military Timezoneは知らなかった.あの`Z`にはそういう意味があったのか.Zeroの頭文字かと思ってた;そして今のJavaは新旧DateTimeライブラリーが入り乱れてて割と辛い
  • Amberで検討されているJava構文の変更 - Qiita

    Amberとは Java言語を拡張するプロジェクトです http://openjdk.java.net/projects/amber/ Amberのブランチ records データ保持用のクラスです sealed-types シールドタイプ newesapes line blockのエスケープ対応 patterns パターンマッチの全体的な開発 patterns-deconstruction パターンマッチでのデコンストラクション patterns-stage-1 instanceofのみのパターンマッチ pattern-runtime パターンマッチのランタイム? local-methods ローカルメソッド lambda-leftovers ラムダで_使えるようにする concise-method-declarations メソッド定義の簡略化 enhanced-enums 拡張enu

    Amberで検討されているJava構文の変更 - Qiita
    vanbraam
    vanbraam 2018/01/28
    予想より小幅な修正だった(Perl6比);recordは簡易classみたいなものか.やりたいことはわからなくもないがscopeを人間が理解しやすいように定義しないと死にそうな予感;他はまあ細かい改善
  • 10年前のレガシーシステムをサーバーサイドKotlinでフルリニューアルしている話 #jjug_ccc #ccc_g2

    JJUG CCC 2017 Fall での発表資料です ◆githubにサンプルプロジェクトあげてます https://github.com/maeharin/kotlin-dvd-rental-dev ◆Kotlinのイベント「どこでもKotlin」を開催してます! https://m3-…

    10年前のレガシーシステムをサーバーサイドKotlinでフルリニューアルしている話 #jjug_ccc #ccc_g2
    vanbraam
    vanbraam 2017/11/19
    http://b.hatena.ne.jp/entry/346511216/comment/vanbraam<こんな事書いたら,server-side事例が出てきた;読む限りKotlin置き換え自体は手堅い感じ.それよりバックエンドのデータストア(p.11)を整理してp.32-33に持って行く方が遥かに大変そう
  • 私の異常なプログラミング教育

    BPStudy#122 〜いかにプログラミングを学ぶか?プログラミング教育を考えるの発表資料です。 https://bpstudy.connpass.com/event/66418/

    私の異常なプログラミング教育
    vanbraam
    vanbraam 2017/10/22
    "毎年やってる研修"のゴールがわからないので評価は保留.ゴール重要;"現場で使ってる"以外の言語をあえて選ぶのはありかも.学習を暗記ではなく理解中心にできそうなので(Pythonで理解しないと仕事=Javaで応用できない)
  • Javaのジェネリクスは「まがい物」ではない - kmizuの日記

    先日、自分が書いた kmizu.hatenablog.com に対する反応として、「Javaのようなまがい物のジェネリクスと比較するのは適切でない」「Javaのジェネリクスと比較するのは適切でない」(おそらくC#や(C++等(2017/09/24追記))の言語と比較して)といった コメントをいくつか見かけました(はてなブックマークコメントやツイッターなどで)。しかし、ここでは、そのような言説こそが適切でない、ということを言いたいです。なお、methane氏との 対話については既に終わったものなので、それとは関係ありません。 そもそも、Javaジェネリクスは、静的型付き関数型言語で既に一般的であったパラメータ多相をJavaに追加する目的で導入されました(C++テンプレートのようなものをJavaに追加するためだと思っている人がいるかもしれませんが、それは実態にあっていません)。実際、Java

    Javaのジェネリクスは「まがい物」ではない - kmizuの日記
    vanbraam
    vanbraam 2017/09/25
    全く文脈の異なる記事だが,b:id:entry:286074513の時も思ったのは,何かを"まがい物"という人物は"本物"の定義を明示すべき,という事.定義が違ってたら議論以前の問題だし,オレオレ定義に基づく言葉は感想でしかない
  • むかしむかし、あるところにチェック例外という機能があったそうな | システムアーキテクトのごった煮

    ってことで、例外のお話です。 どうも僕の知っている限りでは、チェック例外という言語機能をもっているのはJavaだけみたいです。 僕個人としては、すばらしい機能なんですが。 Javaで最初にチェック例外を学んだ時、「そうそう、これこれ、これが欲しかったのよ!」 って思ったあの頃の想いは今も色あせていません。 「ずっと好きだったんだぜ~♪」って斉藤和義の曲を口ずさむくらいに、今もチェック例外を愛しています。 しかし、このチェック例外、他の言語からdisられまくって、最近の言語には取り込まれないという悲しいお話になっています。 過去に様々な議論があった中で、結論としてチェック例外は役に立たないってことになったらしいです。 経緯は知らんがね、そんなん。僕には役立ってるんだから。 ってことで、僕の立場から見た、チェック例外についての考察と扱いを書きます。 反論したい方、自重をお願いします。 だって、

    むかしむかし、あるところにチェック例外という機能があったそうな | システムアーキテクトのごった煮
    vanbraam
    vanbraam 2017/09/24
    例外=大域脱出の手段,検査例外=例外も戻り値の一種なので静的に型を把握,という認識.利点はある&コストも(IDEを使えば)大きいと思わないので,忌避される理由に納得感が余りない;Goの様に大域脱出を否定する方が理解できる
  • スレッド名にデバッグ情報を埋め込むと激しく捗る件 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。 今回、Java のちょっとしたデバッグテクニックを紹介したいと思います。Java で運用中何かトラブルが発生した場合、スレッドダンプを取得することはしばしばあると思いますが、スレッドダンプだけだとちょっと情報が足りないことがあります。今回はスレッドダンプから得られる情報を増やして、素早く障害対応したりデバッグに役立てる方法を紹介します。 まずはじめに: スレッドダンプの取り方 基ですが、改めてスレッドダンプの取得の仕方を紹介しておきます。スレッドダンプを取得する対象のプロセス ID を仮に 12345 として、下記のように jstack コマンドを実行すればスレッドダンプが取得できます(※Linux上で操作する想定)。 $ jstack 12345 対象のプロセス ID は ps aux | grep jav

    スレッド名にデバッグ情報を埋め込むと激しく捗る件 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Javaの難しいところ - きしだのHatena

    Javaをプログラム未経験者に教えるときの話。 細かいところまでちゃんと理解するための難しさではなくて、とりあえず頻出コードが読み書きできるまでの難しさの話です。細かいところまでの理解、どの言語も難しいので。 あと、ここではプログラム自体の難しさは別の話、ということで。 で、Javaには難しいところが結構あるんですけど、難しいのをひとことでいうと「昔の事情や歴史的経緯により、が多い」ところです。 プログラムを教えるときに何が難しいか たとえばpublic static void mainを書くとか、おまじないが多いとか記述量が煩雑とかは、ツールで対処可能で、ツールで対処可能というのは機械的に慣れればいい部分なので、そこまで問題にならないと思います。 あと「おまじないを減らしたい」というのは教える側のこだわりであって、理解しやすさとは別で、そのおまじないがどういうときに必要かというところさえ

    Javaの難しいところ - きしだのHatena
    vanbraam
    vanbraam 2017/04/01
    じゃあやっぱりデータ型も構文も全てlistでシンプルなLispだな,にならない?; TMTOWTDIはPythonにもある(strとstring)し,暗黙のルールはRubyの方が多い;入門言語はOOでない方がいいとは思うので,割とガチでPascalかもしれない
  • GCC、Javaコンパイラを削除へ

    The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, as well as libraries for these languages. GCCチームのデベロッパは9月5日(米国時間)、「Andrew Haley - [PATCH] Delete GCJ」において、GCCブランチからgcc/javaおよびlibjavaを削除するパッチを公開した。GCJ (GNU Compiler For Java)はJavaコンパイラとして開発が進められてきたが、ここ数年は開発が停滞。ほとんどメンテナンスしかされていなかった。すでに役割は果たしたとして削除へ向けた取り組みが進められている。 Javaはこの十年以上、常に重要なプログラミング言語であり続けている。多くのエ

    GCC、Javaコンパイラを削除へ
    vanbraam
    vanbraam 2016/09/09
    そのうちLLVMをバックエンドにするJava compilerフロントエンドが出てくる,と書こうとして調べたら,本格的なものはないようだが実験レベルな既にいくつかある模様(確証なし)
  • NTTデータが「Spring」のコミュニティを盛り上げたい理由とは? 『Spring徹底入門』著者陣に訊く

    JavaのOSSフレームワークとして地位を確立しているSpring Framework。翔泳社では『Spring徹底入門』を刊行しましたが、書はNTTデータの皆さんが執筆されたもの。NTTデータはなぜ価値あるノウハウを公開し、共有しようとするのでしょうか。今回、書を執筆された橋賢二さん、槙俊明さん、池谷智行さん、小島祐介さん、川崎真弘さんにお話をうかがいました。 なぜNTTデータがSpring Frameworkの入門書を手がけるのか? ――『Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発』はNTTデータの皆さん(槙さんは執筆中に転職)が執筆されましたが、最初におうかがいしたいのは、なぜNTTデータがJavaのOSSフレームワークであるSpring Frameworkのノウハウを広めるための入門書を手がけたのかということです。 橋:NTT

    NTTデータが「Spring」のコミュニティを盛り上げたい理由とは? 『Spring徹底入門』著者陣に訊く
    vanbraam
    vanbraam 2016/07/27
    "仲間作り","Springの品質向上","私たち自身がSpringコミュニティでNo.1の存在になること"<この辺は企業のOSS活動に共通する目的
  • Oracle says it is 'committed' to Java EE 8 – amid claims it quietly axed future development

    Exclusive Oracle has told The Register it is "committed" to Java amid growing fears the IT giant had all but given up on Java EE – aka Java Platform, Enterprise Edition. The Redwood City titan said it will present fresh plans for the future of Java EE 8 at its JavaOne conference in San Francisco in September. Version eight is due to be released in the first half of 2017. However, over the past six

    vanbraam
    vanbraam 2016/07/09
    "Oracle is committed to Java and has a very well defined proposal for the next version of the Java EE specification – Java EE 8... "<"well defined proposal"が明らかにならない限り空手形と言われそう
  • Java EE Guardians に対する現時点での最新情報の共有

    2016年7月8日 at 6:37 午後 Java EE Guardians に対する現時点での最新情報を共有いたします。結論から申し上げますと、現時点(2016/07/07)での最新の情報は下記の記事になります。 The Register:Oracle says it is ‘committed’ to Java EE 8 – amid claims it quietly axed future development Java EE Guardians:Oracle Issues Statement on Java EE 8 それ以外の情報はすでに古い情報、もしくは憶測を元に記載されている記事になっていますので、上記記事をご覧ください。おそらく、最新情報をまだご存知ない方が、古い情報を元に SNS で色々と発言されていましたので、整理のためにエントリを記載しました。 これまでの経緯を

    Java EE Guardians に対する現時点での最新情報の共有
    vanbraam
    vanbraam 2016/07/09
    Java EEってopen sourceじゃないんだっけ?OSSなら,"Guardians"とか作ってOracleにpressureかけるよりforkしてしまえばいいと思うのだが;調べたらlicenseはSCSLでOSIのOSDには非適合=非open sourceらしい.そういう物への依存を選んだ人の不幸かな
  • Stateless Session for Multi-Tenant Application Using Spring Security - DZone

    Once upon a time, I published one article explaining the principle to build Stateless Session. Coincidentally, we are working on the same task again, but this time, for a multi-tenant application. This time, instead of building the authentication mechanism ourselves, we integrate our solution into Spring Security framework. This article will explain our approach and implementation. Business Requir

    Stateless Session for Multi-Tenant Application Using Spring Security - DZone
    vanbraam
    vanbraam 2016/06/18
    session cookieをcacheに入れると書いてあるが,cacheの更新ポリシーはどうなってるんだろう?少なくとも1リクエストに1回はdata sourceに取りに行く必要がある気がするし,それだとcacheの意味余りないのではとも思う
  • The Top 100 Java Libraries in 2018 - Based on 277,975 Source Files | OverOps Blog

    Harness empowers software engineering teams with AI-infused technology for seamless software delivery.

    The Top 100 Java Libraries in 2018 - Based on 277,975 Source Files | OverOps Blog
    vanbraam
    vanbraam 2016/05/14
    GitHub repositoriesから依存関係を抽出して集計.上の方はテスト&ログ周りが多い.guavaが異彩;注目はSpringの勃興とFantastic 4(lombok,jsoup,netty,dom4j)
  • 作って理解するWebフレームワーク - きしだのHatena

    前回、簡単なDIコンテナを作ってみたので、次はこれを使ってWebフレームワークを作ってみたいと思います。 Webサーバーをつくる まず、WebフレームワークなのでHTTPサーバーが必要ですね。なので簡単なものを作ります。 とりあえずブラウザからリクエストを受け取ったら200 OKとHTMLを返すだけのサーバーです。 今回は、そこらのブラウザからアクセスできればいいや、ということで、RFCとかの仕様に準拠することは考えません。 public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSoc = new ServerSocket(8989); for (;;) { Socket s = serverSoc.accept(); new Thread((

    作って理解するWebフレームワーク - きしだのHatena
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

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

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
    vanbraam
    vanbraam 2016/04/13
    こういう問題に対し直観的にあたりをつけられるのが,"凄腕エンジニア"なんだろうな
  • 作って理解するDIコンテナ - きしだのHatena

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

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