Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。mainメソッドを含むHelloUniverse.javaソースファイルがあるとします。}}関連スポンサーコンテンツ通常、このクラスを実行するには、最初にJavaコンパイラ(javac)を使用してコンパイルする必要があります。これにより、HelloUniverse.classファイルが作成されます。HelloUniverse.java次に、java仮想マシン(インタープリタ)コマンドを使用して、作成されたクラスファイルを実行します。Universeこれにより、JVMが起動し、クラスがロードされ、コードが実行されます。コードの一部をすばやくテストしたい場合や、Javaの学習を始めたばかりの場合(これが鍵です)、言語を試してみたい場合はどうでしょう。そのプロセスにおけるこれら2つのステップは、少し手間がかかるように思えるかもしれません。11では、中間コンパイルなしで、単一のソースコードファイルを直接起動するオプションがあります。この機能は、簡単なプログラムを試してみたい言語を初めて使用する人にとって特に便利です。この機能をjshellと組み合わせると、優れた初心者向けの学習ツールセットが得られます。JShell」をご覧ください。専門家は、これらのツールを使用して、言語の変更を調べたり、未知のAPIを試すこともできます。私の意見では、Javaプログラムをスクリプトとして作成し、オペレーティングシステムシェルから実行するような多くのタスクを自動化できると、大きな力が生まれます。この組み合わせにより、Java言語のパワーと共に、シェルスクリプトの柔軟性が得られます。これについては、記事の後半で詳しく説明します。11機能により、コンパイルせずにJavaの単一ファイルのソースコードを直接実行できます。それでは、詳細と興味深い関連トピックをさらに掘り下げてみましょう。あなたが守るべきことこの記事で提供されるすべてのデモを実行するには、最新バージョンのJavaを使用する必要があります。11以降である必要があります。最終バージョンはこのリンクから入手できます。ライセンスに同意し、オペレーティングシステムに関連するリンクをクリックするだけです。accessが最新であり、このリンクからダウンロードできます。OracleおよびAdoptOpenJDKを含む他のベンダーから、OpenJDKリリースも利用できるようになりました。IDEではなくプレーンテキストエディタを使用します。11リリースで導入された新機能の1つです。この機能により、javaインタープリタを使用してJavaソースコードファイルを直接実行できます。ソースコードはメモリ上でコンパイルされ、インタープリタによって実行されます。ディスク上に.classファイルは生成されません。この機能は単一のソースファイルにあるコードに限定されます。同じ実行でコンパイルするソースファイルを追加することはできません。この制限を回避するには、すべてのクラスを同じファイルで定義する必要がありますが、ファイル内のクラスの数に制限はありません。同じソースファイルにある限り、すべてパブリッククラスであるかどうかは関係ありません。ソースファイルで宣言された最初のクラスが選択され、メインクラスとして使用されます。mainメソッドをその最初のクラス内に配置する必要があります。最初の例さて、新しいことを学び始めるときの、いつもの方法で始めましょう。Universe!」を使います。さまざまなサンプルを試すことで、この機能をどのように使うかのデモンストレーションに注力しています。これによって、日々のコーディングでこの機能をどのように使用できるかのアイデアを得ることができます。作成していない場合は、記事の上部に記載されているようにHelloUniverse.javaファイルを作成し、コンパイルして、結果のクラスファイルを実行します。今度は、クラスファイルを削除してみましょう。理由はすぐにわかります。HelloUniverse.class今度は、次のように、コンパイルせずにjavaインタープリタのみでクラスを実行します。Universe前と同じ結果が表示されるはずです。HelloUniverse.javaとだけ言えばよくなったことを意味します。クラスファイルではなくソースコードを渡すだけです。ソースを内部でコンパイルし、コンパイルされた結果のコードを実行して、最後にメッセージがコンソールに出力されます。したがって、まだコンパイルプロセスはあり、コンパイルエラーが発生した場合には、エラー通知が表示されます。ディレクトリ構造を確認して、クラスファイルが生成されていないことを確認できます。インメモリコンパイルプロセスです。このマジックがどのように起こるかを見てみましょう。10以降、Javaランチャーは3つのモードで動作します。11では、新しい4番目のモードが追加されました。ソースファイルで宣言されたクラスの実行/li>ソースファイルモードでは、ソースファイルがメモリにコンパイルされ、ソースファイルで見つかった最初のクラスが実行されるような効果があります。ソースファイルモードに入るかどうかは、コマンドラインにおいて、次の2つの項目によって決定されます。<version>オプションが存在する1つ目については、Javaコマンドは、オプションでもオプションの一部でもないコマンドラインの最初の項目を調べます。.javaで終わるファイル名の場合、コンパイルおよび実行されるJavaソースファイルとして扱われます。ソースファイル名の前にJavaコマンドにオプションを提供できます。ソースファイルが外部の依存関係を使用するときにクラスパスを設定する場合です。2つ目については、ソースファイルモードが選択され、最初のオプションでないコマンドライン項目は、コンパイルおよび実行されるソースファイルとして扱われます。--sourceオプションは、ソースファイルモードを強制するために使われます。これは、ソースファイルが実行される"script"で、ソースファイルの名前がJavaソースファイルの通常の命名規則に従わない場合に必要です。--sourceオプションを使用して、ソースコードの言語バージョンを指定できます。これについては後で詳しく説明します。Universeプログラムを強化して、InfoQユニバースにアクセスするすべての人にパーソナライズされた挨拶を作成しましょう。}}Greater.javaというファイル名でにコードを保存しましょう。ファイルの名前は、Java言語仕様の規則に違反するパブリッククラスの名前と一致しないことに注意してください。このコードを実行して、何が起こるか確認してください。universe!!ご覧のとおり、クラス名がファイル名と一致するかどうかは関係ありません。.classファイルは生成されません。Eagle-eyedの読者は、実行するファイルの名前の後にコードに引数を渡す方法にも気付いているかもしれません。ファイル名の後にコマンドラインに表示される引数が、この明白な方法で標準のmainメソッドに渡されます。--sourceオプションでコードファイルのレベルを指定する--sourceオプションを活用する2つのシナリオがあります。コードファイルのソースレベルを指定するJavaランタイムをソース実行モードに強制する最初のケースでは、ソースレベルを省略すると、現在のJDKバージョンであるとされます。2番目のケースでは、.java以外の拡張子を持つファイル名を渡して、その場でコンパイル、実行できます。最初に2番目のシナリオを検証してみましょう。Greater.javaの名前を拡張子なしのgreaterに変更し、同じ方法で再度実行してみます。greaterご覧のとおり、.java拡張子がない場合、Javaコマンドインタープリタは、引数として指定された名前でコンパイルされたクラスを探します。Javaランチャーのモード1です。--sourceオプションを使用してソースファイルモードを強制する必要があります。universe!!それでは、最初のシナリオに戻りましょう。9とは互換性がありません。ソースを10に変更して何が起こるかを確認します。failedエラーメッセージの形式に注意してください。10で制限された型名になることを警告しますが、これは言語レベル9であるため、コンパイルは続行します。ソースファイル内にvarという型が見つからないため、コンパイルの試行は失敗します。複数のクラスを使う場合を見てみましょう。複数のクラスで動作するか答えはイエスです。2つのクラスを含むサンプルコードを調べて、この機能が複数のクラスで動作することを示します。コードは、指定された文字列が回文であるかどうかを確認します。回文とは、「redivider」または「reviver」など、どちらの方向からも同じように読める単語、フレーズ、数字、あるいはその他の文字列です。PalindromeChecker.javaというファイル名で保存されたコードは次のとおりです。}}それではファイルを実行しましょう。True「MadAm」を「RaceCar」を置き換えて、もう一度やってみましょう。True最後に、「RaceCar」の代わりに「Mohamed」を試してみましょう。falseご覧のとおり、単一のソースファイルに必要な数のパブリッククラスを追加できます。重要なのは、mainメソッドをソースファイルの最初のクラスで定義することだけです。インタープリタ(Javaコマンド)は、メモリ内のコードをコンパイルした後、プログラムを起動するためのエントリポイントとして最初のクラスを使用します。モジュールは使えるかはい、モジュールの使用は完全に許可されています。--add-modules=ALL-DEFAULTを使用して、名前のないモジュールの一部として実行されます。これにより、module-info.java.を使用して依存関係を明示的に宣言する必要なく、コードで異なるモジュールを使用できます。11に付属する新しいHTTPクライアントAPIを使用してHTTP呼び出しを行うコードを見てみましょう。java.net.httpモジュールでのフル機能に昇格しています。APIを呼び出してユーザを取得します。パブリックエンドポイントサービスhttps://reqres.in/api/users?page=2を呼び出します。サンプルコードは、UsersHttpClient.javaという名前のファイルにあります。}}プログラムを実行すると、次の出力が得られます。is:{"page":2,"per_page":3,"total":12,"total_pages":4,"data":[{"id":4,"first_name":"Eve","last_name":"Holt","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"},{"id":5,"first_name":"Charles","last_name":"Morris","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/stephenmoon/128.jpg"},{"id":6,"first_name":"Tracey","last_name":"Ramos","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg"}]}これにより、独自のモジュールを作成しなくても、さまざまなモジュールが提供する新しい機能をすばやくテストできます。9」を見てみてください。最初に、Javaプログラミング言語で利用できることが重要である理由を理解するために、スクリプトとは何かを思い出してみましょう。スクリプトは次のように定義できます。「スクリプトは、特定の実行時環境用に記述されたプログラムであり、タスクまたはコマンドの実行を自動化します。タスクまたはコマンドは、人が1つずつ実行することもできます。」この一般的な定義から、スクリプト言語の簡単な定義を導き出すことができます。スクリプト言語は、一度に1つのコマンドを解釈および実行するために高レベルの構造を使用するプログラミング言語です。スクリプト言語は、ファイル内の一連のコマンドを使用するプログラミング言語です。一般に、スクリプト言語はしばしば(コンパイルではなく)インタープリットされ、プログラミングの手続き型スタイルに向かう傾向があります(ただし、一部のスクリプト言語にはオブジェクト指向機能もあります)一般に、スクリプト言語は、Java、CC++などのより構造化されたコンパイル言語よりも、学習しやすく、コーディングも高速です。サーバサイドスクリプト言語の例としてPerl、PHP、Pythonなどがあり、クライアントサイドではJavaScriptがあります。長い間、Javaは適切に構造化され、厳密に型指定されたコンパイル言語として分類され、任意のコンピューターアーキテクチャで実行するために、JVMによってインタープリットされます。Javaに関する不満の1つは、一般的なスクリプト言語と比較すると、学習やプロトタイプの作成がそれほど速くないことです。Javaは現在24歳の言語であり、世界中で約940万人の開発者が使用しています。若い世代のプログラマーがコンパイルとIDEの儀式を必要とせずにJavaを学び、その機能とAPIを簡単に試せるようにするため、最近のリリースではいくつかの機能が追加されました。(REPL)ツールが追加されました。これは、Javaのプログラミングと学習を容易にすることを目的としています。11でスクリプトを作成するには、2つの基本的な方法があります。javaコマンドツールを直接使用する。*nixコマンドラインスクリプトの使用する(bashスクリプトに似ている)。最初のオプションについては既に検討したので、今度は2番目のオプションを見てみましょう。これは、多くの可能性への扉を開く機能です。11ではスクリプトのサポートが導入されました。これには、従来の*nix、いわゆるshebangファイルが含まれます。Specification)を変更する必要はありません。一般的なshebangファイルでは、最初の2バイトは0x23と0x21である必要があります。これは、2つの文字「#!」のASCIIエンコーディングです。その後、ファイルの後続のすべてのバイトは、デフォルトのプラットフォーム文字エンコーディングで読み取られます。したがって、#!で始まる最初の行は、オペレーティングシステムのshebangメカニズムでファイルを実行する場合にのみ必要です。上記のHelloUniverse.javaの例のように、ソースファイルからコードを明示的に実行するためにJavaランチャーを明示的に使用する場合、特別な最初の行は必要ありません。10.14.5のターミナルで実行しましょう。最初に、shebangファイルを作成する際に従うべき重要なルールをいくつか列挙します。Javaコードをオペレーティングシステムのシェルスクリプト言語とミックスしない。VM(仮想マシン)オプションを含める必要がある場合、shebangファイルの名前に続いて、--sourceを最初のオプションとして指定する必要がある。--upgrade-module-pathとそれらのオプションのすべての派生を含む。12で説明されている新しい--enable-previewオプションを含めることもできる。ファイル内のソースコードに使用されるJava言語のバージョンを指定しなければならない。shebang文字(#!)はファイルの最初の行である必要があり、次のようになる。.javaで終わるファイル)を実行することは許可されない。最後に、次を使用してファイルを実行可能としてマークする必要がある。program)を作成しましょう。パラメータが渡されない場合、現在のディレクトリがデフォルトでリストされます。いう拡張子なしのファイル名で保存し、実行可能としてマークします。dirlist次のように実行します。directory../PalindromeChecker.java./greater./UsersHttpClient.java./HelloWorld.java./Greater.java./dirlist親ディレクトリを渡して次のコマンドで再度実行し、出力を自身で確認します。../注釈:ソースコードを評価するとき、shebang行(最初の行)はインタプリタによって無視されます。したがって、おそらく次のような追加オプションを使用して、ランチャによってshebangファイルを明示的に呼び出すこともできます。dirlistまた、スクリプトファイルが現在のディレクトリにある場合、次のように実行することもできます。./dirlistあるいは、スクリプトがユーザのPATH内のディレクトリにある場合、次のように実行できます。dirlist最後に、この機能を使用する際に知っておくべきいくつかのヒントとコツを示して終わりにしましょう。ヒントとコツjavacに渡すことができる一部のオプションはjavaツールによって渡されない(または認識されない)場合があります。-processorや-Werrorオプションです。クラスパスに.classファイルと.javaファイルの両方が存在する場合、ランチャーはクラスファイルの使用を強制します。HelloUniverseクラスとパッケージの名前の競合の可能性に留意してください。次のディレクトリ構造を見てください。greaterHelloUniverseパッケージの下の2つのファイルjava.javaと、現在のディレクトリのファイルHelloUniverse.javaに注目してください。実行しようとするとどうなるでしょうか。HelloUniverse.java最初のファイルと2番目のファイルのどちらを実行するでしょうか。javaランチャーは、HelloUniverseパッケージ内のクラスファイルを参照しません。代わりに、ソースからHelloUniverse.javaファイルをロードして実行し、現在のディレクトリのファイルが実行されます。このshebang機能は、Java言語の力を使用して多くの作業を自動化するスクリプトを作成する可能性の世界を開くので、私はこのshebang機能を使うのが大好きです。11以降、プログラミング言語の歴史の中で初めて、コンパイルせずにJavaコードを含むスクリプトを直接実行できるようになりました。11ソース実行機能により、Javaでスクリプトを記述し、*inxコマンドラインから直接実行できます。今日、この新機能の実験を開始し、コーディングを楽しんでください。仲間のオタクと共有するために、言葉を広めてくれるとうれしいです。SE.next()、JakartaEE.next()、JCPメンバである。Clubボードメンバであった。Data、Cloud、Blockchain、DevOpsに興味がある。JShell」の著者。Champions」がある。2013アワードを受賞。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員��して、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。