apeescape2.com
  • メイン
  • 投資家と資金調達
  • 技術
  • 仕事の未来
  • アジャイル
技術

Haxeレビュー:Haxe4の機能と長所

以前のHaxeレビュー 最後に、次のHaxe 4を見ていきました。Haxe4の公式リリース(およびその後まもなく、2つのバグパッチリリース(バージョン4.0.1と4.0.2))で、新しいHaxeレビューの時間です。この急成長しているプログラミング言語への最新の追加は何ですか? Haxeプログラミング言語コミュニティはどこに向かっていますか? Haxeゲームエンジンは今でも主力ですか?

Haxeレビュー:Haxe4の新機能

前回のメジャーリリースから3年以上の開発により、Haxeプログラミング言語のバージョン4は、マクロパフォーマンス、開発者エクスペリエンス、および構文を改善します。その拡張機能のうち3つはまだ実験的なものと見なされていますが、強調する価値があります。新しいJVMバイトコードターゲット、インラインマークアップのサポート、およびnullの安全性チェックです。

Haxe4の実験的なJVMバイトコードコンパイルターゲット

Haxe 4の新しいJVMバイトコードターゲットは、主要なコンパイル手順を省くことにより、Haxeを介したJava開発をかなり効率的にします。Java独自のコンパイラ(javac)にHaxeのトランスパイラーのJavaソースコード出力をコンパイルさせる2番目の手順はありません。

Javaターゲット用に開発する場合の、新しい直接JVMターゲットと元のワークフローの比較。オリジナルはいくつかの.hxソースを取り、.javaソースを生成します。これは、実行可能な.jarファイルが最終的に生成される前に、Javaコンパイラ(JDKに依存)でコンパイルする必要があります。新しいターゲットを使用すると、開発者は.hxソースから実行可能な.jarファイルに直接移動できます。

Haxe 4でコンパイルするこの方法は、Java開発者キット(JDK)への依存を完全に取り除き、将来実装されるインタラクティブなデバッグへの扉を開きます。

hxjavaの主流バージョンがHaxe4互換になるまで、基本的なセットアップでは、HaxeとHaxelibをインストールしてから、haxelib install hxjava 4.0.0-alphaを実行します。これで、開発フローは簡単になります。

# transpile directly to JVM bytecode with Haxe (-D jvm would also work): haxe --main HelloWorld --java jar_output --define jvm # run JVM bytecode with Java: java -jar jar_output/HelloWorld.jar

直接JVMコンパイルがHaxe4でまだ実験的なステータスを持っていることを考えると、いくつかの注意点があります。

  • Androidに固有の問題がいくつかあります。
  • ランタイムパフォーマンスは かなり 良い 、最終的には間接的な方法よりも高速になる場合でも。

それでも、Javaベースのテクノロジーを活用する人にとっては正しい方向への注目すべき一歩です。

Haxe4での実験的なインラインマークアップサポート

JSX、誰か? Haxe 4はインラインマークアップを有効にし、開発者がたとえばHTMLをHaxeソースコード内に直接記述できるようにします。

var dom = jsx(

This is a paragraph.

);

jsx()以降これは静的マクロ関数である可能性があります。これにより、プロジェクトは、マークアップが開発者が実装しようとしているXML風の仕様に準拠しているかどうかをコンパイル時にチェックできます。 XMLサポート自体がHaxeAPIに組み込まれているため、チェックではXml.parse()を活用できますが、 基本的な「XMLっぽい」解析可能性のために、それさえ必要ではありません :

static macro function jsx(expr) { return switch expr.expr { case EMeta({name: ':markup'}, {expr: EConst(CString(s))}): macro $v{'XML MARKUP: ' + s}; case _: throw new haxe.macro.Expr.Error('not an xml literal', expr.pos); } }

この機能の目的は、Haxeをゲーム開発バブルから追い出すのを助けることです(確かにそこでも使用されていますが)。コンパイラレベルで実装されるのは十分に一般的であるため、上記のマクロでHaxe APIは必要ありませんが、特定のDSLをチェックすることは、コンパイラチームとコミュニティにとって次の質問です。 見つけ出す 。

Haxe4での実験的なヌル安全性

1965年にnull参照が発明されて以来、nullの安全性の問題は、Haxeプログラミング言語のようなnull許容型環境の開発者の悩みの種でした。 AleksandrKuzmenkoの見積もり GitHubは、1,000万を超えるnullポインター参照エラーの修正をコミットしています。

Haxe 4には、コンパイル時のnull安全マクロが組み込まれています。これは@:nullSafetyを含めることで有効にできます。指定された定義の直前の行。入ってくる@:nullSafety(Loose) (デフォルト)および@:nullSafety(Strict)モードであり、必要に応じて@:nullSafety(Off)で無効にできます。 Strictモードは、nullの安全性が無効になっているコンテキストであっても、nullを割り当てる可能性のあるフィールドミューテーションの関数呼び出しを調べます。

レスポンシブデザインのためのメディアクエリ

Ruby開発者は、便利な安全なナビゲーション演算子(Rubyでは?.)がレーダーに乗っているかどうか疑問に思うかもしれません。まだですが、Haxeのプログラミングの多くの側面と同様に、 そのためのマクロ (代わりに!.を使用することに注意してください。)

Haxe 4の開発者エクスペリエンス(DX):構文の追加、シンタックスシュガーなど

Haxeプログラミング言語とHaxeIDEサポートへのDX関連の追加により、Haxe 4のエクスペリエンスは、さまざまな面で他のプログラミング言語と少なくとも同じレベルになります。ある意味で、Haxeはすべての人にとってすべてのものになることを目指していますが、コンパイラチームは、他の言語の最も便利な機能と規則を統合するために思慮深いアプローチを取っています。

その結果、Haxeプログラミング言語と標準APIは、安定性、感性、まとまりを損なうことなく進化します。このHaxeレビューのすべてが誇大広告に値するように見えるわけではありません。まさにそれがポイントです。DXは改善されており、これは単に派手な「機能」を追いかけることに賛成です。 当時の 。」

ただし、バランスを取る必要があります。Haxeの変更は、他の言語が従うパターンを認識して行われ、Haxe 4は、より人気のある言語からの新規参入者にアピールするように努めています。

新しい「関数タイプ」構文

その点で、Haxeは関数タイプを表す2つの主要な方法をサポートするようになりました。古い構文は、「自動カリー化と部分適用がサポートされていることを示唆していますが、サポートされていません」と述べています。 元の機能の提案 :

Int -> String -> Void

新しい構文では、名前付き引数が許可され、DXが改善されます。

(id:Int, name:String) -> Void

ただし、DXは別として、関数タイプにHaxe 4の新しい構文を使用することは、古い、劣った構文が将来のメジャーバージョンで削除される可能性があるため、習得するのに適した習慣です。

シンタックスシュガー…

画期的なことではないかもしれませんが、Haxe 4の構文の改善は、特定の開発バックグラウンド(ES6など)を持つ既存のHaxe開発者と、Haxeに初めて参加する可能性のある開発者の両方にとって歓迎すべきニュースです。

矢印関数(「ショートラムダ」)構文がサポートされるようになりました。これは、Haxeの場合、多かれ少なかれfunctionと入力するためのショートカットにすぎません。およびreturn。キー値とインデックス値の反復構文(それぞれマップと配列用)もサポートされるようになりました。静的拡張を使用する型宣言では、1つだけ使用できますusing対応する静的拡張メソッドが使用されるすべての場所でそれらを必要とするのではなく、グローバルにステートメント。

列挙型と列挙型の要約には他にもいくつかの改善点があります。そのうちの1つは、後者がマクロの範囲から直接コンパイラーのサポートに移行したことです。同様に移動された他の機能には、最終クラス、最終インターフェイス、および 外部フィールド 。

マクロに依存する一部の機能は、マクロに依存したままでしたが、それでも改善されました。 演算子のオーバーロードがレベルアップされ、フィールドセッターが含まれるようになりました 、およびメタデータ 名前空間を作成できるようになりました .で@:prefix.subprefix.nameのような区切り文字。

上記の変更を呼び出す シンタックスシュガー 確かに過度に単純化されていますが、読者はからリンクされている元の提案を掘り下げることを歓迎します Haxe4のリリースノート 詳細が必要な場合。

その他のHaxe4DXブースト

インタラクティブなデバッグは コンパイルされたさまざまなターゲットに対してHaxeですでに可能 、新しいeval targetは、解釈されたコードのインタラクティブなデバッグを可能にします。簡単な例として、Haxeの「Hello、World」チュートリアルのプロジェクトディレクトリを取得し、whatever-you-want.hxmlというファイルを追加できます。このように見える:

--main HelloWorld --interp

…そして、VSCodeIDEでインタラクティブなデバッグを簡単に行うことができます。

  1. プロジェクトを開く ディレクトリ VSCodeで;
  2. どこかにブレークポイントを追加します。そして
  3. F5を押して、ドロップダウンから「HaxeInterpreter」を選択します。

この機能を使用すると、javaのような特定のターゲット用に実際にコンパイルしている場合でも、同じ方法でマクロコードをインタラクティブにデバッグできます。 (--interpを使用するのではなく)。 HaxeとVSCode自体以外の唯一のインストール要件は HaxeVSCode拡張 。

IDEサービス

IDEと言えば、Haxe 4は新しいIDEサービスプロトコルを導入します。これは、最新のVSCodeHaxe拡張機能であるvshaxeですでに活用されています。これにより、パフォーマンスが大幅に向上するだけでなく、vshaxeは次のような非常に便利なDXの改善を提供できます。

  • (待望の)自動インポート
  • オートコンプリートのホバーヒントは、「このフィールドはどこから来たのか」という質問に答えるなど、詳細を表示します。
  • 予想される型の補完、接尾辞の補完、オーバーライドの補完など、いくつかの洗練された新しい方法による非常に徹底的なオートコンプリート
  • コード入力中のキーストロークの最適化

これらの価値を確認するのははるかに簡単です 関連するvshaxe変更ログからの優れたビジュアルデモ 。 vshaxe VSCodeを使用するのはHaxeIDEだけではありません。HaxeDevelopとKodeStudioはHaxe固有であり、IntelliJ IDEA、Sublime Text、AtomなどのHaxe IDEプラグインがありますが、それはパックよりも進んでいるようです。 Haxe 4の新しいIDEサービスプロトコルを利用し、続いて IntelliJ-Haxe 。

Unicodeリテラル

実際のUnicode文字列リテラルを使用したい開発者は、Haxe 4でサポートされていますが、 いくつかのニュアンス 知っておくべき。

読み取り専用配列

標準のHaxeAPIに読み取り専用配列が追加されました。これらは、たとえばhaxe.ds.ReadOnlyArrayなどのタイプの変数を宣言するのと同じくらい簡単に使用できます。その後、値を設定、プッシュ、またはポップしようとすると、さまざまなコンパイラエラーが発生します。 finalを追加しますキーワードを宣言に追加し、配列自体を再割り当てすることも許可されません。

呼び出しサイトのインライン化

呼び出しサイトのインライン化は、開発者が関数をインライン化する場所をきめ細かく制御できる新しいHaxe言語機能であり、全体的なサイズとパフォーマンスのトレードオフが負けの決定になる可能性がある頻繁に呼び出される関数を最適化するときに役立ちます。


これらは、すでに優れたHaxeプログラミング言語に追加する価値があります。 Haxe 4がリリースされた今、Haxeコミュニティ構築の開発者は何ですか?

Haxeゲームエンジンを超えて:Haxe4を使用したWeb開発

Haxeのユーザーベースは、歴史的にゲームプログラマーによって支配されてきました。しかし、 たくさんの例 フロントエンドとバックエンドの両方の開発のために、ビジネススタック、モバイルアプリ、Webなどの他のセグメントでHaxeが大規模に使用されています。

そのために、Haxe 4は再生成されたHTML外部を提供します。つまり、Haxeのjs.html標準APIは、MDNが定義するように、より幅広いWeb APIで最新の状態になり、バグを修正し、不足しているAPIを追加しています。 (たとえば、Haxe4には現在 プッシュAPI 。)

Juraj Kirchheimの講演では、 Haxeでより良いWebを織り上げる 、彼は、HaxeベースのWebソリューションが、企業環境で桁違いに効率的でありながら、より堅牢である例を指摘しています。

彼はまた、Railsのアーキテクチャーアプローチ(フォルダー階層の観点から)にも反対していますが、Railsの完全なWebフレームワークを好む開発者はそれでも可能です。 1つ見つける 。また、開発者が完全なWebプロジェクトのソースを確認することも有益な場合があります。その場合は、 Giffonの公開リポジトリ 、Haxe 4をサポートするクラウドギフトプラットフォーム。同様に、JavaScript分割のようなWeb中心のオープンソースHaxeライブラリ Haxeモジュラー 、ジェネリック thx.core そして その姉妹図書館 、および由緒あるHaxeWebツールキット ティンカーベル すべてがすでにHaxe4をサポートしています。クロスプラットフォームのUIソリューションもサポートしています。 HaxeUI 、Webコンテキストをサポートしますが、ビジネスおよびデスクトップアプリの開発を含むはるかに広い範囲を対象としています。特に、新しいHaxe言語のリリースに至るまで、着実に成熟し続けています。

Web、ゲーム、エンタープライズ…プラットフォームやアプリのフレーバーに関係なく、開発チームは、たとえ1つのチームであっても、最終的には依存関係の管理に取り組む必要があります。このため、Haxe開発者がレビューするのに役立つリソースは、AdamBreeceの講演のスライドです。 他の人とうまくスケーリングする 。

ゲームに最適なプログラミング言語としてのHaxe

ゲーム開発のための単一の「最良の」言語さえ存在しますか?これは主観的な質問であり、白熱した議論を見つけるのは簡単です。コミュニティの規模だけで予想されるよりも大きいHaxeのゲーム開発分野での成功は、確かに偶然ではありません。ジョーウィリアムソンは、これがなぜあるのかについていくつかの洞察を提供します 2019年にLudumDare45ゲームジャムに勝つことについてのインタビュー 、そしてこれはHaxe4でも続くと思われます。

Haxeの元の作成者であるNicolasCannasseは、すでにShiroGamesの制作でHaxe4を使用しています。 ノースガード 。 Motion Twinは、Haxe4を生産に使用しています。 死んだ細胞 。どちらのゲームもSteamで何万もの肯定的なレビューがあり、PC(Win、Mac、Linux)とコンソールの両方で利用できます。どちらのゲームも開発チームが小さく、ユーザーベースが数百万であることを考えると、本当に手ごわい結果です。 Dead Cellsには​​iOSバージョンもあり、Androidバージョンもレーダーに搭載されています。

ライブラリに関しては、いくつかの主要なHaxeゲームエンジンがHaxe4の変更に確実に対応しています。 Haxe4互換エンジンには次のものが含まれます Kha (そしてその上に構築された多くのエンジンの一部-例えば、 アーマリー )、 HaxeFlixel とその主な依存関係 OpenFL 、 NME 、および ヒープ —当然のことながら、NorthgardとDeadCellsが使用しているのはそれだからです。 HaxePunk Haxe4の互換性にも取り組んでいます。ある場合には、図書館、うなじ、 分岐した Haxe4で動作します。

一部の開発者は、すでに存在する多くのエンジンの1つを使用する代わりに、独自のエンジンを作成することもあります。たとえば、Kirill Poletaevは、詳細を説明します どうやって そして なぜ 彼は独自の3DHaxeゲームエンジンを作成しました。上記のエンジンは社内にあるため、Haxe4にまだ移行していないプロジェクトの一例であることは理にかなっています。

Haxe 4:優れたツールチェーンのスムーズな進行の継続

と Haxe このように幅広いユーティリティを備えているため、最も重要なHaxe 4の機能は開発者によって異なるため、このHaxeレビューは決して網羅的なものではありません。 Haxe 4の変更点のいくつかは、上記にありません。

  • JavaScriptターゲットのES6出力の追加
  • 機能(一部はhx3compatライブラリから引き続き利用可能)とターゲット(PHP5以降)の削除 AS3 )
  • CLIフラグが一般的なツールとの整合性を高めています(たとえば、-lib-.hxmlファイルを使用するには、-Lまたは--libraryに変更する必要があります)。
  • ほかにfinal現在はキーワードになっています(したがって、変数名として使用することはできません)、operatorおよびoverload新しく予約されたキーワードでもあります。

いくつかの重大な変更もありましたが、それらは非常に少ないため、アクティブに保守されているライブラリの多くは、Haxe 4の互換性を明示的に発表することすらしていません。一般に、Haxe3からの移行はかなり簡単であると言われています。結局のところ、Haxeの目標の1つは、多数のターゲットプラットフォームのサポートを調整している最中の安定性であり、Haxe4はここで失望しません。

新規ユーザーはどうですか?最終的に、Haxeがゲームに最適なコーディング言語であるかどうか、HaxeエコシステムがWeb開発用の最も堅牢なライブラリを提供するかどうか、またはHaxe固有のツールが特定のワークフローに最も賢明なDXを提供するかどうかを判断するのは読者次第です。少なくとも、Haxeは多くの分野で実行可能な競争相手であり続けており、ほぼすべての開発者に秘密の利点を提供しています。

さらに読む:Haxeを初めて使用する開発者は、次のようなかなり新しいHaxeチュートリアルに興味があるかもしれません。 ジョン・ガブリエレ 、およびのリリースノート Haxe 4.1.0 そして Haxe 4.1.1 。

基本を理解する

クロスプラットフォームアプリケーションの開発に使用できるフレームワークはどれですか?

React NativeやXamarinのようないくつかのクロスプラットフォームフレームワークがありますが、Haxeを使用して、フレームワークの有無にかかわらず、単一のコードベースから複数のプラットフォーム用のアプリケーションを開発できます。特にReactNativeではHaxeexternを利用できます。つまり、Haxeを使用して開発することができます。

クロスプラットフォーム開発に最適なプログラミング言語はどれですか?

Javaはクロスプラットフォームのコンテキストで議論される最初の言語であることがよくありますが、Haxeにはさらに幅広いターゲットのセットがあります。Javaだけでなく、C#、C ++、JavaScript、PHPなどにもトランスパイルできます。 Haxeは使いやすさを磨きながら非常に多くのターゲットを維持することができたので、ここでは間違いなく競争相手です。

ゲームに最適なプログラミング言語はどれですか?

ゲーム開発は非常に広範囲にわたるため、ゲームに最適なプログラミング言語はプログラマーとプロジェクトの両方に依存します。 Haxeの場合は、独自に洗練された言語を提供すると同時に、単一のコードベースからWin / Mac / Linux、iOS / Android、HTML5、およびコンソールシステムをターゲットにすることができます。

ゲーム開発エンジンとは何ですか?

ゲーム開発エンジンは、一般的な(または完全な)ゲームエンジン機能を提供するソフトウェアライブラリです。ゲームエンジンは、ゲーム体験を提供するためにアセットやユーザープラグインなどを処理するために必要なコアコードで構成されています。ゲーム開発エンジンには、独自のIDEやその他の特定のツールが含まれている場合があります。

GitHubPagesとCloudflareによる無制限のスケールと無料のWebホスティング

技術

GitHubPagesとCloudflareによる無制限のスケールと無料のWebホスティング
ウェブサイトの再設計を検討する理由–ヒントと推奨事項

ウェブサイトの再設計を検討する理由–ヒントと推奨事項

Uxデザイン

人気の投稿
教師あり機械学習アルゴリズムの調査
教師あり機械学習アルゴリズムの調査
M&A販売プロセス中に考慮すべき評価ドライバー
M&A販売プロセス中に考慮すべき評価ドライバー
初期市場参入の課題
初期市場参入の課題
Adobe CCを使用してワイヤーフレームを作成できることを誰が知っていましたか?
Adobe CCを使用してワイヤーフレームを作成できることを誰が知っていましたか?
愛を込めてデザイナーへ(フロントエンド開発者からの手紙)
愛を込めてデザイナーへ(フロントエンド開発者からの手紙)
 
モバイル向けの情報アーキテクチャの原則(インフォグラフィック付き)
モバイル向けの情報アーキテクチャの原則(インフォグラフィック付き)
リモートワークスペースでの機会と行動の促進
リモートワークスペースでの機会と行動の促進
タレントマッチングディレクター
タレントマッチングディレクター
iOS用の自動テストを作成する方法
iOS用の自動テストを作成する方法
Hotjar:UXと変換のヒント
Hotjar:UXと変換のヒント
人気の投稿
  • awsアーキテクトアソシエイトスタディガイド
  • ノードjsにはWebサーバーが必要ですか
  • バーチャルリアリティ履歴アプリケーション技術と未来
  • デューデリジェンスに関する質問
  • asp.netコアWebAPIチュートリアル
  • SQLServerのパフォーマンスチューニングと最適化
  • 国境調整税対関税
カテゴリー
Uiデザイン トレンド リモートの台頭 収益と成長 仕事の未来 Webフロントエンド 投資家と資金調達 財務プロセス 計画と予測 モバイル

© 2021 | 全著作権所有

apeescape2.com