WPFで可能なようなグラフィカルアプリケーションのOSX開発に何をお勧めしますか?
私の特定のバックグラウンドはSmalltalkとJavaですが、現在は主にDHTML / .NET(ASP.NET/C#)で作業しています。
WPFで可能なようなグラフィカルアプリケーションのOSX開発に何をお勧めしますか?
私の特定のバックグラウンドはSmalltalkとJavaですが、現在は主にDHTML / .NET(ASP.NET/C#)で作業しています。
ココア。多くの人から、これまでで最高のアプリケーションフレームワークであると考えられています。言語はObjective-Cであり、Javaの作成者に影響を与えたSmallTalkのような言語です。
実際、クロスプラットフォームになりたいなどの特定のニーズがない限り、OSX開発用のCocoaに代わる合理的な方法はありません。
Xcodeツールの一部として含まれているInterfaceBuilderの他に、QT、GTK +、AWT&SWING(Javaバックグラウンド用)、Tk、Squeak(Smalltalkバックグラウンド用)、Shoes(非常にクールな小さなRuby GUIツールキット)も使用できます。 )、FXRuby(より多くのRuby)、wxWidgets、XULRunner、その他忘れてしまったと思います。ただし、最もネイティブなアプリの場合は、InterfaceBuilderが最善の策です。
Cocoaは、Mac OS Xで使用する主要なフレームワークです。これは、Appleが使用するものであり、ほとんどの新しい開発で使用されるものであり、主に新しい機能が追加される場所です。
WPFを使用している場合は、Cocoaの概念のかなりの数をおなじみのように感じるかもしれません。(Cocoaは少し古いですが。)完全にMVCを中心に構築されており、プロパティ変更の通知とバインディング、アニメーションのサポート、永続性とオブジェクトグラフ管理フレームワークなどがあります。
(また、タグに「mac」を追加することもできます。)
Java のバックグラウンドがあるので、現在非推奨になっている Cocoa-Java ブリッジに惑わされないでください。OS X の歴史の初期に、Apple は Cocoa ライブラリ用の Java インターフェースを (苦労して手作業で保守) 提供しました。Java と Objective-C のセマンティックの違いにより、キーと値のバインディング (他の多くの機能が構築されている) を含む Cocoa の最も強力な機能の多くは非常に難しく、Objetive-C と Java の機能の相違につながります。ブリッジの最終的な非推奨。すべての Cocoa 開発は、Objective-C、または Python や Ruby などの動的言語への多くの (自動生成された) ブリッジの 1 つを使用して行うのが最適です。
smalltalk のバックグラウンドがあれば、1 日か 2 日で Objective-C を習得できると思います。
WPFが何であるかはわかりませんが、OSXプラットフォームのほとんどの開発は、Cocoaを使用したObjective-Cで行われます。非推奨のCarbonAPIはJavaなどの他の言語で使用できますが、OSX用の新しいアプリケーションは実際にはObjective-Cで開発する必要があります。XcodeをIDEとして使用したAppleのガイドから始めることができます。
以前の投稿者とは別の言い方をすれば、InterfaceBuilder でインターフェイスを設計せず、Objective-C で操作する場合、見た目、感触、動作、または動作が異なるアプリケーションになってしまうことになります。 Macintosh アプリケーションはそうすべきであり、ユーザーにとっては目立たなくなるでしょう。ユーザーにとっては、他のアプリと比較して不快な体験になるため、別のアプリが必要になる可能性があります。
アプリケーションがすでに QT を使用していて、それを迅速に移植したい場合は、QT のようなツールキットを使用できますが、新しいアプリケーション (または別の GUI) を作成する場合は、ObjC または ObjC++ を使用して Cocoa で作成します。
Cocoa を含む Mac OS X コンポーネントのバインディングを含む、Python プログラミング言語と Objective-C の間のブリッジであるPyObjcを見たことがあるかもしれません。
Smalltalk のバックグラウンドがあるので、ストレートな Cocoa と Objective-C をお勧めします。ただし、動的言語に傾倒している場合は、RubyCocoaで Ruby を使用できます。Ruby の方が Python よりも習得しやすいと思います。