Objective-J、Web上のMacOSテクノロジー

この記事では、カプチーノプロジェクトの現状と、付随する言語Objective-Jを検討しようとしました。 このテキストは、OSXプログラミングテクノロジーに精通している人を対象としていますが、具体的な実装の詳細には触れないようにしました。 Cocoaに精通している人はこの方法を理解できますが、残りはまずObjective-CとCocoaの基本を理解する必要があります(またはCappuccinoサイトのチュートリアルを参照します)。



Objective-Jは基本的に、JavaScriptに基づくObjective-Cランタイムの部分的な実装を表します。 技術的には、実装はJavascriptプリプロセッサで構成され、正規表現に基づいてObjective-Jを通常のJavascriptに変換します。 ランタイムには、低レベル言語の概念にアクセスするためのいくつかの関数(Objective-Cランタイムに類似)も含まれています。 そのため、クラスを動的に作成するための関数、ivar list、新しいセレクターを追加します。 本質的に、クラス実装パーサーは、記述を正確にこれらの関数の呼び出しに変換します。



プリプロセッサとRTTIの実装に加えて、この言語の基本的な機能には、Javascript型からCappuccino型(Carbon-Cocoaの「無料バンドル」のようなもの)へのキャストが含まれます。 したがって、文字列または配列のセレクターを呼び出すことができます。

  objj> [「テスト」の長さ]
 4
 objj> [[1、2、3] objectAtIndex:1]
 2




カプチーノの次のコンポーネントは財団です。 中核は、NSプレフィックスをCPプレフィックスに変更することを除いて、CocoaのFoundationのコピーです。 Macプログラマーはくつろいでいます。 まあ、またはほぼ自宅で-それらに実装されているクラスとセレクタの数が大幅に少ないため。 現在、Foundationの最大の問題はドキュメンテーションにあります。Cocoaのない人はカプチーノを試す方法を知っており、コードがドキュメンタリーのコメントよりもはるかに多くのことを言っている方法が不十分に記述されているためです。 CappuccinoでAPIドキュメントを生成するために、DoxygenのObjective-Cパーサーが使用され、Objective-C構文以外の場所で停止するという事実により、状況は複雑になります。



バグトラッカーにはFoundationの機能を拡張するいくつかのパッチがありますが、アップストリームにそれらを追加するのは急いではありません。 おそらく、パッチの作成者は最初にコントリビューターのライセンス契約に署名する必要があるためです。実際、コードのすべての権利を280 Northに譲渡する契約です。 これは問題ではありません(フレームワークでパッチを書く場合-ほとんどの場合、あなたはそれで何かをすることを気にしません)が、それは「紙の見掛け倒し」を台無しにしたくないプログラマを怖がらせます。パッチからアップストリームへのキューを作成します。



AppKitの状況は、基本的にFoundationと同じです。 ユーザーインターフェイスクラスは、Webの現実に適応し、プロセスで多少変更されます。 CPTableViewは非常に不足しており、Cocoaのテーブルおよびリストのインターフェイスを実装するすべてのタスクを実行する類似物です。 Key-Value Observingはなく、Cocoa Bindingsの類似物であるため、データはデリゲートを介してのみ送信できます。 Cocoaに精通していないプログラマーは、ポジショニングビューのモデルを理解することは困難です(このトピックに関する個別のチュートリアルもあります)。 一般的に、インターフェースのレイアウトには多くの時間がかかります。 実験段階では、nib2cibは、nibファイルとxibファイル(Interface Builderからのインターフェース記述)をネイティブのカプチーノ形式に変換するコンバーターです。 もちろん、IBを介してインターフェイスを設計する方が簡単で親しみやすいですが、まず、ファイルで結果大幅に変更する必要があります。次に、OSXユーザーのみがInterface Builderを持っています。



最近、カプチーノの状況は改善しています。 バグトラッカーは整頓されており、言語の基本概念に関するドキュメントが改善されています(通常のhtml / css / js web開発者向け)。 潜在的に-カプチーノの背後に十分な機会があります。 今でも、Cappuccinoでのリッチインターネットアプリケーションの作成は、多くの場合、このためのjsツールキット(Bindowsなど)よりも簡単です。




All Articles