# iPhone/iPad App Entwicklung



## hrbaer (9. Dez 2010)

Hallo,

auch wenn ich weiß, dass ich mich in einem Java-Forum bewege habe ich doch ein paar kurze Fragen zu iPhone/iPad App Entwicklung:

- Mal angenommen man würde solche Apps entwickeln wollen habe ich bis dato lediglich xCode als Entwicklungsumgebung "ausfindig" machen können. Gibts es für Windows keine Entwicklungsumgebung? Warum geht hier nicht Eclipse oder Netbeans? Gibts hier keine Unterstützung für C sharp?
- Soweit ich weiß können Apps nur in der Programmiersprache C sharp entwickelt werden. Gibts keine anderen Programmiersprachen um Apps zu programmieren? Gibts vielleicht sogar Translator, die aus Java-Code C sharp-Code erzeugen?
- Wenn man sich in einer App verschiedener Dienste bedienen will (bereitgestellt als (Java-)WebServices (Spring-WS)), worauf muss man achten? Gibts eine bestimmte Schnittstelle die man bedienen muss oder wie sieht sowas aus?

Danke im Voraus.


----------



## ARadauer (9. Dez 2010)

> Soweit ich weiß können Apps nur in der Programmiersprache C sharp entwickelt werden


nö... objective c


----------



## hrbaer (9. Dez 2010)

nur oder auch?


----------



## Tomate_Salat (9. Dez 2010)

C# ist afaik eine M$-Erfindung. Insofern: objective-c + Cocoa. Es gibt diverse Wrapper, sodass du z.B. flash zu einer App generieren lassen kannst. Wieviel Chancen du mit Java hast, ka.


----------



## mjdv (9. Dez 2010)

Es ist eigentlich nur vorgesehen, dass man mit einem Mac und XCode Apps entwickelt und das nur in Objective C. Alles was davon abweicht, mag manchmal ganz gut funktionieren, ist aber eben nicht offiziell und du kannst sie zb nicht in den App Store stellen lassen und falls du deine App dann auch auf deinem Telefon haben willst, musst du dich bei Apple registrieren. Ich glaube das kostet 150 Dollar im Jahr oder so.

Alles in allem eigentlich nciht das wirklich wahre


----------



## hrbaer (9. Dez 2010)

Ok, soweit zur Entwicklung 

Und wie sieht das jetzt aus wenn ich aus der App heraus einen (Spring-)WS ansprechen möchte? Wie funktioniert das?


----------



## ice-breaker (9. Dez 2010)

mjdv hat gesagt.:


> Alles was davon abweicht, mag manchmal ganz gut funktionieren, ist aber eben nicht offiziell und du kannst sie zb nicht in den App Store stellen lassen



geht mitlerweile schon, die Lizenzbedingungen wurden gelockert, man sollte aber bedenken, wenn man in anderen Sprachen als Objective-C bastelt, kann man nur einen Bruchteil von dem tun, was möglich ist. Das ist dann für 9 von 10 Anwendungen ausreichend, aber irgendwann kommt man an die Grenzen.

Für Java ist mir bisher kein erstzunehmendes Projekt bekannt, für JavaScript (Titanium Mobile), C# (MonoTouch), Lua (Corona SDK) gibt es aber gute Ansätze.


----------



## hrbaer (10. Dez 2010)

Es gibt also tatsächlich keine Entwicklungsumgebung unter Windows in der man mal eine "Hello World"-App bauen kann?!
Oder braucht ich die xCode-Umgebung vorallem um auf die Standard-Elemente (Buttons, Events, ...) zugreifen zu können? Ich würde doch nämlich mal davon ausgehen, dass ich selbst in einem einfachen Editor Objective C programmieren kann. Hindert mich ja niemand dran?! Dann brauchts nur noch einen C-Compiler (oder muss es sogar einen speziellen Objective C-Compiler sein?) und schon wäre man fertig?


----------



## Sonecc (10. Dez 2010)

hrbaer hat gesagt.:


> Ich würde doch nämlich mal davon ausgehen, dass ich selbst in einem einfachen Editor Objective C programmieren kann.


Wenn du schon fragen musst, was für einen Compiler du benötigst (dich also scheinbar nicht mal zu Wikipedia bewegen konntest), wage ich die zitierte Behauptung anzuzweifeln


----------



## hrbaer (10. Dez 2010)

Sonecc hat gesagt.:


> Wenn du schon fragen musst, was für einen Compiler du benötigst (dich also scheinbar nicht mal zu Wikipedia bewegen konntest), wage ich die zitierte Behauptung anzuzweifeln



Was hindert mich daran Source-Code in einem Editor zu schreiben? Brauchst du zum Programmieren von Java auch immer ein Eclipse/Netbeans oder schafft man das vielleicht nicht auch in einem Wordpad *überleg*?!?

Davon mal abgesehen finde ich diese Kultur des "Wer meiner Ansicht nach ne blöde Frage stellt bekommt auch direkt ne blöde Antwort" mehr als traurig. Habe als Kind mal gelernt, dass es keine dummen Fragen, sondern nur dumme Antworten gibt. Sollte sich der ein oder andere mal zu Herzen nehmen. Ich denke jeder darf noch das Recht haben sich zu erkundigen. Wenn die Art der Fragestellung dann dem ein oder andern nicht passt dann spar ich mir doch die Antwort als dass ich denjenigen noch mal blos stelle...

Aber gut, scheint jeder anders zu sehen.


----------



## Sonecc (10. Dez 2010)

Du kannst deine Programme schreiben womit du willst. Ich habe auch nichts dazu gesagt, dass du es mit einem Editor versuchen willst. Wenn du aber nichtmal weißt, welchen Compiler du nutzen kannst (was durch schlichtes 2 minütiges Nachdenken schon ersichtlich ist) und dich nichtmal dazu aufringen kannst, die ersten 2 Sätze bei Wikipedia zu Objective-C zu lesen, dann bezweifle ich ganz einfach, dass die für dieses Vorhaben benötigte Motivation überhaupt vorhanden ist. Ein Programm nur über den Editor zu schreiben ist keine angenehme und keine einfache sache, da muss man sich durchbeißen und man muss mehr Energie einbringen wie bei einer guten IDE. Da dir die Motivation, dich selbst zu informieren aber fehlt, bezweifle ich eben, dass du das durchhalten würdest ein komplettes Programm auf diese Weise zu schreiben.


Um deine Frage aber mal zu beantworten:

Objective-C basiert auf C und bringt Sprachelemente mit, die C nicht kennt. Logische Folgerung daraus ist, dass ein C Compiler nicht in der Lage ist, ein Objective-C Programm zu kompilieren. Umgekehrt ist es übrigens möglich, das heißt, mit einem Objective-C Compiler kannst du in der Regel jedes C Programm kompilieren.


----------



## hrbaer (10. Dez 2010)

Danke für die Antwort. So kommen wir beiden doch noch auf einen Nenner 

Jetzt haben wir uns aber leider nur über den letzten Satz meines Beitrags unterhalten. Wo ich eigentlich "herkam" war die Frage, ob es nicht auch für Windows eine IDE gibt mit der man solche Apps bauen kann. Problematisch sehe ich hierbei (dafür fehlt mir aber das Detailwissen), dass ich zwar Objective-C programmiern könnte, deswegen aber noch keine App dabei heraus kommt. Hier fehlt ja noch die Verbindung zu den Apple-Bibliotheken und Elementen. Deswegen ja auch der Verweis auf xCode. Ich schätze das wäre genau die IDE um das zu leisten?!

Gerne noch mal zu meiner Motivation: Wo ich hinkommen möchte ist eine App mit einem Java WS sprechen zu lassen. Was liegt also näher sich eine eigene App zu bauen die sich genau dieses WS bedient. Um aber eine App bauen zu können - und sei sie noch so einfach - brauch ich eben mal ne IDE und ein paar Infos zu dem Thema. Es liegt also nicht in meinem Interesse größere Apps zu bauen, allerdings schon mal das "Gerüst" zu verstehen und vorallem die Integration mit einem Java-WS nachzubilden.

Vielleicht ist das Ergebnis dieses Threads auch, dass man das mit nem Windows-Rechner auch nicht leisten kann? Dass ich diese einfach App auch nicht launchen möchte sollte damit wohl auch klar sein


----------



## MarderFahrer (10. Dez 2010)

Nein, es gibt keine Windows IDE zum "bauen" einer iPhone Applikation.
Schreiben kannst du sie natürlich in jedem Editor, wie du schon sagtest.
Aber das eigentliche compilieren, verlinken, signieren, das geht nur unter MacOS mit der xCode Toolchain.

Als "einfachste Art" eine iPhone Applikation zu bauen, würde ich die klassische Webanwendung verstehen.
Ich weiß nicht ganz, was genau du mit dem WS vorhast, liefert der Daten, die die Applikation verarbeiten und darstellen muss, oder passiert praktisch die gesamte Logik im WS?
Bei letzterem wäre es sogar noch einfacher. Du kannst die gesamte WS programmieren und wenn das fertig ist, guckst du dir PhoneGap an.
PhoneGap is quasi ein "leeres" iPhone Template, welches am Ende eine App rauswirft, die nur aus einer UIWebview besteht. Also einem Browser. Wenn du den also auf deine Webanwendung zeigen lässt, hast du eine App, die man im AppStore verkaufen könnte.

Soweit die Theorie. Praktisch muss aber auch bekannt sein, dass Apple schon solch "billige" Apps abgelehnt hat mit der Begründung, dass diese Art von App genauso gut als Webseite existieren könnte, was ja logisch ist. Man sollte also schon die Features des iPhones ansprechen um zu belegen, dass das App einen Mehrwert gegenüber einer reinen Webapplikation hat.

Zum Schluss sei aber noch erwähnt, dass auch wenn man eine Webapplikation mit php oder Ajax oder was auch immer natürlich erstellen kann ohne je einen Mac angefasst zu haben, man für das eigetnliche Bauen um xCode nicht herum kommt. Sei es für nativen obc-c code oder für das Bauen einer PhoneGap App.


----------



## ice-breaker (10. Dez 2010)

Also 2 Platformen gibt es glaube ich, mit denen man Apps auch auf Windows bauen, das Corona SDK (glaube ich) und das Airplay SDK.
In wieweit das da funktioniert, warum, wie und wie man eine Anwendung baut, kann ich dir jedoch nicht helfen, diese Recherche lass ich dir übrig.


----------



## hrbaer (10. Dez 2010)

Super, danke für die Tipps. Werde mir das mal anschauen.
Bin inzwischen auch noch über diesen Link gestolpert: http://genuitec.com/mobile/features.html. Angeblich kann man hier auch Apps unter Windows bauen. Hat hier schon jemand Erfahrung gesammelt?

@MarderFahrer: Im Grunde gibts die WS schon alle und jetzt soll eine native(!) App gebaut werden, die sich nach und nach dieser WS bedient (neben alle möglichen anderen Sachen die die App "von sich aus" macht). Es wird also keine App dabei heraus kommen, welche lediglich eine Webadresse aufruft und den Inhalt nur noch anzeigt, sondern Informationen abruft und diese entsprechend aufbereiten muss. Vermutlich werde ich nie wirklich in die Verlegenheit kommen die App richtig zu entwickeln. Aber ich würde es eben gern mal gesehen haben und daher die Frage wie ich mal eine einfach App selber bauen kann um die gleichen WS zu konsumieren...

Mir gehts dabei konkret um den Austausch und wie dieser statt finden muss, bzw. was es dabei zu beachten gibt. Wenn hier noch jemand was zusteuern kann wäre das natürlich super!


----------



## Tomate_Salat (10. Dez 2010)

nur so am Rande: ohne signierung(oder Jailbreak) bekommst du die Apps höchstwahrscheinlich auf keinen ipod/ipad/iphone. Dafür brauchst du die Händler-lizens. Ich habe schon eine Hello World app auf meinem MBP gemacht und konnte sie aufgrund der fehlenden lizens nicht auf meinen IPod spielen...


----------



## hrbaer (10. Dez 2010)

Ja, hatte das auch schon gelesen. Wird aber für die native App kein Problem sein. Da wird die Lizens gekauft. 
Und für meine "Test"-App hätte ich ein Iphone mit jailbreak....


----------



## MarderFahrer (13. Dez 2010)

Also, dieses Genuitec scheint mir nur als Mockup Tool gedacht zu sein?
Da wird zwar u.a auch von "voll funktionstüchtigen" Apps geredet, aber für mich sieht das eher wie eine Platform für Demo Zwecke aus.
Das benutzt die Google App Engine und schiebt das, was man sich da im Editor zusammenstellt in die Cloud und schickt dann an eine Distributionsliste eine SMS, damit sich jeder das Ergebnis in seinem Mobile Browser angucken kann. Ich hätte jetzt gesagt, dass man so höchstens am Gerät evaluieren kann, ob die Menüstruktur stimmig ist und intuitives navigieren des Users möglich ist.
Aber dort auch die eigentliche Business Logik drin zu schreiben... ka. Müsste man sich mal ansehen.
Es dürfte dann aber definitiv nicht nativer Code sein, was da raus kommt. Ich tippe auf GWT mit Ajax weil die App Engine da mit im Spiel ist. 

Die Idee ist mir da auch schon mal in den Sinn gekommen. Da man Java schon kann, könnte man mit dem GWT quasi in Java seine App schreiben, und das, was der GWT Compiler dann raushaut (JavaScript/Ajax) könnte man nehmen und mit einem Tool wie PhoneGap zu einem iPhone App zusammenpacken um es dann im Appstore verteilen. Aber wie gesagt, nativer Code ist das nicht. Sondern nur eine WebView, die so aussieht als wär es eine richtige Anwendung.


----------



## Fiddy (22. Okt 2011)

hrbaer hat gesagt.:


> Ja, hatte das auch schon gelesen. Wird aber für die native App kein Problem sein. Da wird die Lizens gekauft.
> Und für meine "Test"-App hätte ich ein Iphone mit jailbreak....



So einfach ist es eben nicht immer mit dem Kaufen der Lizenz. 
Und auch mit einem gejailbreakten iPhone können sich Fehler einschleichen. Ich hatte schon genug Apps die dort z.B. auch mit einem älteren iOS funktioniert haben, in der richtigen Testumgebung hingegen nicht. Also immer vorsichtig sein...


----------



## dehlen (22. Okt 2011)

Ich bin von Objective-C zu Java gekommen.
Also wenn du Cocoa entwickelst also für Mac, dann kannst du die Apps archivieren und auf deinem Mac, bzw auf anderen verwenden. Wenn du Cocoa Touch also iOS entwickelst dann kannst du die App noch nichtmal auf dein eigenes iPhone machen. Dafür brauchst du dann eine Developer Lizenz die 79€ im Jahr kostet, mit der du deine Apps in den App Store stellen kannst. Du bekommst dann ein Developer Certificate mit der du deine App signieren kannst. Wenn du Mac Apps in den Mac App Store stellen willst brauchst du einen weiteren Account wieder mit 79€ pro Jahr.
Ansonsten wird entwickelt in Xcode nicht xCode  und das läuft nur auf dem Mac. Natürlich gibt es noch andere SDK wie z.B diese Flash Variante, aber damit wirst du nie eine native iPhone App erstellen können.


----------



## Dit_ (23. Okt 2011)

hrbaer hat gesagt.:


> Hallo,
> 
> auch wenn ich weiß, dass ich mich in einem Java-Forum bewege habe ich doch ein paar kurze Fragen zu iPhone/iPad App Entwicklung:
> 
> ...




HTML5 -> Titanium -> iPhone, Android, BlackBerry.  

Titanium Studio basiert auf Eclipse.


----------



## schlingel (26. Okt 2011)

Eine native App schlägt (derzeit) solche SDK Basteleien und Webapps um Längen wenn die App komplexer wird. Und das in den Punkten Performance, Look&Feel, etc.

Wenn du für eine Firma programmierst die sich kurz entschlossen hat dir diese Aufgabe auf's Auge zu drücken dann wirst du dir von dort einen Mac holen müssen.

Zu deiner Frage ob Spring WS u. App funktioniert: Normalerweise kein Problem. REST/Json (was ja Spring ohne Probleme raushauen kann.) funktioniert gut. Sobald du mit SOAP arbeiten willst schaut es da schon anders aus. Der Markt dafür ist für's IPhone auch ziemlich klein, dementsprechend gibt's da nur wenige Libs.

Wenn man von Java kommt wirkt das alles ein wenig ... unprofessionel was es da so gibt.


----------



## MarderFahrer (28. Okt 2011)

schlingel hat gesagt.:


> Eine native App schlägt (derzeit) solche SDK Basteleien und Webapps um Längen[...]



Auf welche SDK Basteleien beziest du dich? Titanium? Falls ja ist es wichtig zu wissen, dass anders als bei z.b PhoneGap, Titanium nativen Code ausgibt. In wie fern der auch architektur mäßig gegen eine von Hand geschriebene native application bestehen kann, steht auf einem anderen Blatt. Aber nativ sind beide Varianten.


----------



## schlingel (28. Okt 2011)

PhoneGab erzeugt doch nur eine Container-App in der die in JS/HTML geschriebene Anwendung läuft. Titanium meines Wissens auch. 

Das Zeug läuft dann zwar innerhalb einer nativen App, ist aber keine native App.

Bei Titanium bin ich ein gebranntmarktes Kind. Ich hab das letztes Jahr mit meinem Team im März evaluiert. Wir konnten die Android-Beispiel-App weder auf nem Linux, Mac noch auf einem Windows 7 zum laufen bringen. 

Aber was ich so höre, ist die Android-Unterstützung mittlerweile wirklich erhalten.


----------



## MarderFahrer (28. Okt 2011)

Mit der Funktionsweise von PhoneGap hast du Recht. 

Aber bei Titanium läuft es anders. Wie gesagt nimmt Titanium den JavaScript Dialekt der Quellcodes, die man geschrieben hat und kompiliert mit Hilfe der offiziellen SDK's (Apple's iOS / Googles Android) nativen Code, den man dann wie selbst geschriebenen Code behandeln kann was das Paketieren und submitten in Appstores anbelangt.

Im Prinzip ist PhoneGap wirklich nur eine Webview, die eine original vorhandene html Seite Lokal öffnet. Man kann also in seinem Lieblings HTML Editor eine komplette (Offline)WebApp schreiben mit allem was dazu gehört. Und die könnte dann sowohl auf einem Webserver laufen, als auch mittels PhoneGap in einer App.
Vorteil ist eben dabei, dass sich diese App in den Appstore submitten lässt obwohl es "nur" eine eingerahmte Web Applikation ist.

Ich meine aber auch schon von rejections gelesen zu haben, wo es hieß, da es sich nur um eine gepackte Web Applikation handelt, würde sie nicht angenommen.

Und bei Titanium handelt es sich eben nicht um reinen, in Javascript geschriebenen Webcode, sondern es sind spezielle Javascript "Container", von Appcelerator spezifiziert, um mittels cross compilation daraus mit den nativen SDK's die entsprechenden Objekte zu erzeugen.

Um ein Popup Dialog zu erzeugen nimmt man bei Titanium zum Beispiel folgenden Code:

```
var alertDialog_del = Titanium.UI.createAlertDialog({
    title: 'Hallo',
    message: 'Dies ist eine text Message',
	cancel:1,
    buttonNames: ['OK','Cancel']
});
```

Das ist zwar die Javascript Konforme Art ein Objekt zu erzeugen, aber in einem normalen Webbrowser wirst du da nichts sehen. Ersichtlich an dem "Titanium.UI.createAlertDialog". Damit teilt man dem Titanium Cross Compiler mit, dass man eine Dialog Box haben will. Und kompiliert man das ganze dann für iOS, bekommt man "h" und "m" Klassen in denen dies in Objective-C geschrieben ist. Während man beim Kompilieren gegen das Android SDK, eine "Java" Datei erhalten wird, in der Die DialogBox in reinstem Java implementiert ist.

Die einzige Sache ist eben, in wie fern dieser generierte native Code besser oder schlechter ist als selbstgeschriebener. Man kennt das ja von Java GUI Buildern, die einem dann den GUI Code generieren nachdem man sich eine Oberfläche zusammengeklickt hat. In dem Code kann man manchmal gar nichts erkennen und so auch keine manuellen Änderungen dran vornehmen. Das Problem könnte bei generiertem Titanium Code dann auch auftreten. Man muss dann eben alles in den Java Script Files ändern und jedesmal den nativen Code neu generieren um zum Beispiel zu sehen ob man einen Fehler beheben konnte.


----------

