Von Oxygene hört man hier im Forum vermutlich nicht viel, weil "Prism" aus dem
RAD Studio Paket verschwunden ist und Embarcadero zusammen mit vielen eingesessenen Delphianern voll auf FMX abfährt.
Ich verwende Delphi für
Win32 (
VCL) und Oxygene für alle anderen Plattformen.
Die Sprachfeatures von Oxygene sind, wie Phoenix schon schrieb, einfach umwerfend. Allerdings ist das RemObejcts Team wirklich sehr agil, wenn es um das Tunen der "
OxygeneLanguage" geht. Daher stehen neue Features manchmal nicht sofort im Wiki und man stößt irgendwann durch Zufall darauf. Die RO Jungs versuchen das Beste aus allen Sprachen nach und nach in Oxygene für alle Plattformen zu implementieren. Schon cool was da inzwischen alles geht.
Im .Net Bereich (ich mache da eigentlich nur ASP.Net) mache ich es so, dass ich das Kernprojekt in C# umsetze und codelastige Teile in eine Oxygene Assembly auslagere, die ich im Kernprojekt referenziere. Für C# ist das Tooling in VisualStudio einfach viel Erwachsener und Code schreibe ich am liebsten in Pascal.
Für iOS mache ich im Moment recht viel, Andriod habe ich bisher nur angetestet und WinRT wird für mich erst nach der Build 2014 zum Thema, wenn Microsoft die neuen Fahrpläne auf den Tisch gelegt hat.
Das wirklich schicke an Oxygene ist, dass alle Plattformen mit den "regulären" nativen SDKs angesprochen werden und es darüber hinaus Pascal als zentrale Sprache gibt. Dadurch kann man die Businesslogic in zentrale, plattformneutrale Units packen und überall wiederverwenden. Die UI und andere Device spezifische Sachen werden hingegen mit den plattformspezifischen SDKs entwickelt. Dadurch sehen die Apps am Ende nicht nur "ein bisschen aus wie echt" sondern sind "wirklich richtig echt nativ" und fühlen sich auch so an.
Der der große Vorteil des "wirklich nativen" Programmierens ist aber auch der einzige wirklich große Nachteil an Oxygene. Besonders für Delphi Quereinsteiger. Das Arbeiten mit den plattformspezifischen SDKs und Frameworks erfordert zwangsläufig auch, dass man sich dort einarbeitet und die Dokus der Hersteller studiert und die "nativen Sprachen" wie Java oder Objective-C zumindest lesen können muss. Es ist nicht möglich (aber auch nicht gewollt), dass man eine Codebasis nimmt und für alle Plattformen kompiliert. Die Lernkurve ist entsprechend steil.
Oxygene erleichtert einem das Arbeiten mit "fremden Code" ziemlich stark durch ein Werkzeug namens "Oxydizer". Dieses Tool kann Java, Objective-C und C# Code aus der Zwischenablage als Pascal Code ins Projekt "pasten". Das klappt in der Regel sehr gut und nimmt einem viel Arbeit beim Umschreiben ab.
Die Community rund um Oxygene ist wirklich recht klein. Leider.
Allerdings kompensiert das RemObjects Team dies durch ein erstklassiges Kundenforum, in dem das komplette Team total engagiert Fragen beantwortet, Feature Requests annimmt oder sich um das Troubleshooting kümmert.
Letztendlich ist die Größe der Community auch relativ uninteressant, weil man für iOS und Andoid Apps sehr viele "sprachnative" Lösungen auf StackOverflow findet und rund um jede Plattform tausenden Communities und endlos viel Trainingsmaterialien existieren.
Da Oxygene mit den regulären SDKs arbeitet, dann man sprachnativen Code und das plattformspezifische Wissen 1:1 in Oxygene benutzen.
Ich habe ein wirklich gutes Gefühl bei der Arbeit mit Oxygene und bin mir sicher, dass für mich langfristig kein anderes Cross Plattform Entwicklungssytem in Frage kommt.