Java9から17で入った新機能で、実際コード書く上で使いそうなものをピックアップします。 Java8を使い続けていた人向けです。 レコード (Java16) 不変なデータを保持するクラスを簡単に定義できるようになりました。 classの代わりにrecordで定義します。 名前の後に、フィールドのリスト(コンポーネントと呼ばれます)を記載します。
はじめに この記事はシスコ同志によるAdvent Calendarの25日目として投稿しています。 幸いタイトルのような無茶振りには遭ったことはありませんが、シスコではJavaバイトコードを操作する技術を使った監視製品を開発しているので、その技術について本記事でサンプルを交えて紹介します。 この記事を読んで出来ること おわかりでしょうか?HelloWorldはAliceに対して挨拶するプログラムだったのに、-javaagent:agent.jarというオプションを付けて実行すると、Malloryに挨拶するプログラムに変わってしまいました。 このカラクリはJVMが読み込んだJavaバイトコードを実行時に書きかえ、変数の値をAliceからMalloryに変えています。HelloWorldのソースコードも、コンパイル後の.classファイルも変えていないにも関わらず、実行時に処理を変更できてしま
はじめに 2018 年 10 月に Cloud Native Buildpacks は Cloud Native Computing Foundation (CNCF)に Sandbox として受け入れられました。 CNCF には Kubernetes, Prometheus, Envoy, Fluentd など有名プロジェクトも多く受け入れられています。 Buildpacks を使うことで、Dockerfile を書かなくても Docker イメージを作成できます。 また、作成されるイメージはかなり軽量でした。 buildpacks.io 試してみた 今回は、以下のリポジトリの Java アプリケーションの Docker イメージを作成します。 github.com インストール # Mac $ brew install buildpacks/tap/pack # Linux $ wge
要約 JVMは任意の言語で作ることができるので、Perlで書いてみました github.com このようにクラスファイルを読み取り、それを実行することができます 今回は読者がJVMを書き始められるようにクラスファイルの読み取り方に焦点をおいて解説します(あまりPerlの話はしません) 目次 自己紹介 JVMの基本 クラスファイルの解説 オペコードの実行 まとめ 自己紹介 駅メモにて主にバックエンドを担当しているid:toricorです。 仕事ではサーバがPerl実装なので、Perlでいろいろな機能を実装したりパフォーマンスチューニングをしたりしています。 JVMをつくろう 残念ながら今のところ仕事ではほぼJVMと縁がないので、まずは基本を確認します JVMとは Java Virtual Machine(Java仮想マシン)の略です Java仮想マシン - Wikipedia JVMはJav
Spring Bootで --spring.config.location に複数のプロパティファイル(またはYAMLファイル)を指定した場合の優先順位を調べてみました。 TL;DR --spring.config.location にはカンマ区切りで複数のプロパティファイルを指定できる。 後に指定したプロパティファイルで値が上書きされる。 例えば a.yaml,b.yaml,c.yaml を指定した場合、 c.yaml の定義値、 b.yaml の定義値、 a.yaml の定義値の順に検索される。 試してみた Spring Boot 2.0.0.M7で試してみました。 @ConfigurationProperties("foo") @RestController class Example { var bar: String = "default.bar" var baz: String
最近 JVM のヒープ領域とパラメータ、そしてコンテナの関係について調べてました。 案外まとまった情報が少なかったので簡単にまとめました。 Java のヒープサイズを設定 まずは Java のヒープサイズについて簡単なおさらいです。 本番環境で Java アプリケーションを運用する上で、JVM のヒープサイズを決定するのは非常に大事なポイントです。 ヒープ領域の最大サイズを大きくすればガベージコレクション (GC) の回数は減らすことができますが、 必要以上に大きくしすぎると無駄にリソースを消費したり、OOM killer で OS にプロセスを終了させられます。 JVM が使用できるヒープサイズは、Java API の Runtime.getRuntime().maxMemory() で確認できます。 また java の起動オプションに -XX:+PrintFlagsFinal オプショ
1人もしくは(すごく能力の高い人だけの)少人数での開発と、大人数での開発ではプログラミングに対して気にするべきポイントに差があるような気がしています。 ここでいう大人数の開発とは、「プログラミングがどれくらいできるのか、自分が把握していない人がコードを書く可能性がある環境」を想定しています。 ここに挙げているポイントは「規模感に関わらず常に気にすべきこと」も含まれていますが、大人数になると特に問題が大きくなりそうなものをピックアップしてみました。 また、レビューに対する工数をすごくたくさんかけられる環境など、開発現場によっては当てはまらないものもいくつか含まれていますが、本記事ではあまり気にせず思いついたものを羅列しています。 本記事では基本的に「レビューでつぶす」という解決方法はあまり考慮していません。粒度によりますが、本当に厳密なレビューフローがないと、どこかのタイミングで読みづらいコ
はじめに この記事は、成り上がりたくて必死に読んだ感謝の技術書6冊を真似した記事です。 本稿では、開発経験10年以上の私が、新人の頃に読めば良かったと後悔するほど感謝した技術書を紹介します。 私がこれらの本を読んだのは、入社して数年経ってからですが、もっと早く読んでおけば、もっとうまく仕事ができたのにと思いました。以下に、各書籍の概要と、後悔するほど感謝した理由を記します。 感謝の技術書① 『報・連・相の技術がみるみる上達する!』 恥ずかしながら私はこの本を読むまでは、報告・相談される相手がどういうタイミングでどういう詳細度で報告・相談して欲しいかということを考えたことがありませんでした。 上司に「報・連・相をしっかりやりなさい」と言われても、その「しっかりやる方法」というのが、それまではよく分かっていませんでした。それが、この本を読んで、自分がどれだけ「自分本位の考え方」でコミュニケーシ
Spring BootとPlay Framework、どっちがどう良いの? 専門家が5つの視点で徹底解説 Spring BootとPlay Framework、どちらを使うべきか……?開発者を悩ませる疑問に答えるべく、専門家2人がさまざまな視点で両フレームワークの特徴を解説します。 【比較ポイント(1)】設計思想や登場してきた歴史的背景 【比較ポイント(2)】得意分野や利用されている領域 【比較ポイント(3)】各コンポーネントの実装スタイル 【比較ポイント(4)】データベース接続まわり 【比較ポイント(5)】今後のリリース展開について Webアプリケーション開発において、フレームワークは欠かせない存在となっています。開発者が実装すべき処理に集中でき、堅牢でメンテナンスしやすいアプリケーションをすばやく開発できる。これこそ、フレームワークを使う最大の利点といえるでしょう。 JavaやScal
しばらく前に、Amazon LinuxでのJavaのLTSが発表され大きな話題となりました。 Amazon LinuxでのJavaのLTS (Long-Term Support)提供について 「ほぇー、AWSもやりおるやんけ!!」と感慨にふけっていたら、それの100倍ぐらい衝撃的なニュースが、Javaの神様James Goslingのツイートで飛び込んできました。 Just announced #amazon #Corretto at #devoxx. It is our distribution of OpenJDK. https://t.co/09cuPEqnex — James Gosling (@errcraft) 2018年11月14日 「無償」かつ「AWS以外でも使えるマルチプラットフォーム」かつ「LTS(Long-Term Support)」つきのOpenJDKをAWSが提供
JJUG CCC 2017 Fallでの発表資料です。
若手Javaエンジニア必見。知っておきたいフレームワーク・ツール23選 システム開発において、登場頻度が非常に高いJava。数多くのフレームワークやツールが存在しますが、一体どれを選べば、効率的な開発が行えるのでしょうか。おすすめのものを一挙にご紹介します! システム開発をする際、欠かせない存在なのが各種フレームワークやツールです。これらを導入することで、工数の削減やアプリの品質向上、セキュリティの堅牢化など数多くの利点があります。中でもJavaのフレームワーク・ツールは、Javaを開発に使用している企業の多さゆえ、利用される頻度も高いものです。 しかし、それらは数えきれないほどの種類があるため、知識の少ない若手のうちは「どれを選べばいいんだ……」と途方に暮れてしまうケースも少なくありません。 そんな悩みを解決するため、今回はよく使われるものから珍しい機能のもの、最近注目されているものまで
こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C
再び 以前と同じく、TrunkでAndroid開発のトレーニングを請け負いました。 sakebook.hatenablog.com 今回は、1ヶ月でカメラアプリを作成してストアへ申請するというものでした。 1ヶ月と言っても、1回3時間の講義を4回行うという形式です。 前回の反省を踏まえ、一度の講義の時間を長くしています。 前回と異なり、スキルを身につけるというより、作り上げることをテーマにしていました。 対象は、学校やインターンでJavaを習った方限定としました。 募集 前回、知識レベルに差があったのが教えにくかったので、前提として、Javaの文法がわかる程度の学生を対象としました。 参加枠は4人でしたが、応募してきた方は半分の2人でした。。 第1回 speakerdeck.com 狙い Android Studioでプロジェクトを作成した時にいろいろファイルが生成されるが、どれが自分で編
宮崎大地 Daichi Miyazaki 株式会社ポテパンCEO。ベンチャー企業にてエンジニア専門のキャリアコンサルタントと採用担当を経験した後、フリーランスとなりプログラミングスクールと連携したキャリア支援を始める。自身でもプログラミングを学習しポテパンサービスの開発を現在でも担当。エンジニアキャリア、独立、起業、税関連に精通しており、将来を見据えたキャリアプランを提案することが可能。 フリーランス案件の中でも最も需要が高いと言っても過言ではないJava。 今回は、フリーエンジニアが知っておくべき、Java案件の求人案件トレンド、単価相場についてまとめました。 なお、本記事はフリーエンジニアに案件を紹介するサービス「ポテパンフリーランス」がお届けしています。 いますぐにJava案件を探したい!今後、Java案件に参画することを考えている!という方はお気軽に下記からお気軽にご登録ください。
関連記事 この記事も古くなりましたね。執筆時の実装バージョンKotlin 0.12から1.0.2へのアップグレード対応をした際の知見を記事にしました。 Kotlinを実案件で使いました 先日、僕の勤め先のQonceptは『リアル鬼ごっこ』×富士急ハイランド 巨大遊園地からの逃走を開発、リリースしました。 富士急ハイランドで実際に鬼ごっこをする企画で、一般のお客さんがスマホで専用アプリを使いながらクリアを目指します。園内には鬼役のスタッフや、ゲーム進行に関わる設備などがあり、これらとスマホがiBeacon(BluetoothLE)を用いて連動することで、ダメージを受けたり、アイテムを使用したり、クイズを解いたりなどします。 Qonceptの開発範囲は、iOSアプリ(とAppleWatchアプリ)、Androidアプリ、サーバサイドでした。 受注確定となった時点で、残り日数と開発者リソースに対
日頃より、アレスネットをご愛顧いただきまして誠にありがとうございます。 「ホームページサービス」のサービス提供は2016年1月31日をもちまして終了させていただきました。 これまで長らくご利用いただき、誠にありがとうございました。 今後も、皆様によりよいサービスをご提供させていただけるよう、サービス品質向上に努めて参りますので、何卒、ご理解いただけますようお願 い申し上げます。 <アレスネットをご契約のお客様へ> 後継サービスとして「userwebサービス」を提供させていただいております。 詳しくは、以下のリンクをご参照ください。 ▼「userwebサービス」のご案内 http://www.ejworks.info/userhp/alles/index.html 今後ともアレスネットをご愛顧いただけますようお願い申し上げます。 株式会社イージェーワークス アレスネット カスタマーサポート
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く