iPhone 4 Java Developer: "What the hack is ... ?"
Upcoming SlideShare
Loading in...5
×
 

iPhone 4 Java Developer: "What the hack is ... ?"

on

  • 1,708 views

Was Sun Microsystems mit Java (ME) über Jahre hinweg vergeblich versuchte, ist Apple mit dem iPhone, iPod und iPad in nur wenigen Monaten gelungen: die Erschließung eines riesigen Marktes für ...

Was Sun Microsystems mit Java (ME) über Jahre hinweg vergeblich versuchte, ist Apple mit dem iPhone, iPod und iPad in nur wenigen Monaten gelungen: die Erschließung eines riesigen Marktes für mobile Anwendungen (Apps) – aber leider nicht für den klassischen Java Developer. Stellt sich die Frage, ob die Entwicklung von iOS-basierten Anwendungen mit Objective-C sich wirklich so stark von Java unterscheidet. Die Session erläutert den typischen Entwicklungsprozess für iOS Apps, geht auf die gängigen Tools und die Sprache Objective-C ein und zeigt darüber hinaus, wie "einfach" es ist, eine selbst geschriebene Anwendung im App Store zu platzieren. Und das alles natürlich alles aus der Sicht eines Java Guys.

Statistics

Views

Total Views
1,708
Views on SlideShare
1,508
Embed Views
200

Actions

Likes
0
Downloads
23
Comments
0

3 Embeds 200

http://www.openknowledge.de 185
http://share.timetoact.de 14
url_unknown 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • CTL: UI und Foundation\nML: Animation, Graphic, Video und Audio\nSL: Address Book, CFNetwork, Core Location, Security, SQLLite, XML Support\nOSL: System Calls, C Bibliotheken\n\nzu SL: \nCore Foundation C Library Strings, dates, collections, threads, etc.\nAddress Book Framework Managing contact info\nCFNetwork C Library Low-level network access\nCore LocationFramework Accessing geospatial positioning info\nSecurity Framework Manages certificates, public/private keys, etc.\nSQLiteC Library Accessing lightweight SQL database\nXML SupportObjC Class NSXMLParser class\n \n
  • Device Feature Bibliotheken(z.B. Acclerometer, Kamera, Video)\n\n
  • \n\n
  • \n
  • \n
  • \n
  • application binary interface (ABI)\nAmazing Fantasy #15\n\nÄhnlich zu Java ABER ...\n„more powerful & more dangerous“\n\n
  • Weak-Linking: Lib wird nur dann dazu gelinkt, wenn sie vorhanden ist. Mehrere OS Versionen können unterstütz werden (iAD)\nSelector: are an efficient way to reference methods directly in compiled code - the compiler is what actually assigns the value to a SEL.\nBlocks: Code Blöcke können wir Objekte „durch die Gegend gereicht werden“\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Entspricht Constructor OHNE Parameter. \nWie realisiere ich Constructor MIT Parameter: initWith-Methoden\n
  • \n
  • \n
  • \n
  • \n
  • Instanzmethode, da „-“\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • http://pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1\nhttp://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html\n\nBlocks: Code Block anonym in ein Objekt packen und weiterreichen (zum Beispiel als Callback Method) \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

iPhone 4 Java Developer: "What the hack is ... ?" iPhone 4 Java Developer: "What the hack is ... ?" Presentation Transcript

  • iPhone 4 Java Developers „What the hack is ...?“ Lars Röwekamp open knowledge GmbHDienstag, 10. Mai 2011
  • iPhone 4 Java Developers „What the hack is ...?“ Lars Röwekamp open knowledge GmbH @mobileLarson @_openknowledgeDienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • WTH ... iOS?Dienstag, 10. Mai 2011
  • WTH ... Objective-C?Dienstag, 10. Mai 2011
  • WTH ... Tools?Dienstag, 10. Mai 2011
  • WTH ... Apple?Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • „WTH ... iOS?“ – iOS Verständnis ist Voraussetzung – Liefert Basis-Infrastruktur für Apps – „must-understand“ App Life-Cycle – „should-know“ Frameworks – „well-defined“ Design PatternsDienstag, 10. Mai 2011
  • App Event LoopDienstag, 10. Mai 2011
  • - applicationDidFinishLaunch... {...} - applicationDidBecomeActive {...} - applicationWillResignActive {...} - applicationWillTerminate {...} App Life-CycleDienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • - applicationDidFinishLaunch... {...} - applicationDidBecomeActive {...} - applicationWillResignActive {...} - applicationWillTerminate {...} - applicationDidEnterBackground {...} - applicationWillEnterForeground {...} App Life-Cycle (eXtended)Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • CTL Cocoa Touch Layer ML Media Layer SL Core Services Layer OSL Core OS Layer Framework LayersDienstag, 10. Mai 2011
  • Cocoa Touch Layer CTL – UIKit – App Management – Graphics & Windowing – UI Views & Controls – Touch Event Handling – Text Handling – Web Content – Device Feature Bibliotheken (z.B. Acclerometer, Kamera, Video)Dienstag, 10. Mai 2011
  • Cocoa Touch Layer CTL – Foundation – Wrapper Klassen (string, number, binary ...) – Collection Klassen (array, sets, dictionary, ...) – Bundles (dynamisch geladene App Module) – User Preferences – Threads & Run Loops – File Streams und URLs – Bonjour (dynamisches Discovery)Dienstag, 10. Mai 2011
  • Core App ObjectsDienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • „WTH ... Objective-C?“ – Brad Cox & Tom Love (stepstone) – Basiert auf den Ideen von Smaltalk – striktes Superset von ANSI CDienstag, 10. Mai 2011
  • Objective-C – Objektorientiert – State-of-the-Art Compiler – sehr gute Performance – ABI kompatibel, d.h. „C for free“ – Dynamisch – Mesage orientiert – MinimalistischDienstag, 10. Mai 2011
  • Objective-C 2.0 – Mit Mac OS 10.5 eingeführt – GC, aber nicht auf iOS – Fast-Enumeration – Weak-Linking – Selectors – BlocksDienstag, 10. Mai 2011
  • Objective-C 2.0 – Mit Mac OS 10.5 eingeführt – GC, aber nicht auf iOS ? – Fast-Enumeration – Weak-Linking – Selectors – BlocksDienstag, 10. Mai 2011
  • public void setSize( Dimension size ) { if (size.height!=0 && size.width!=0) { if (!this.size.equals(size)) { super.setSize(size); for ( MapItem i: mapItems ) i.resize(); } } } The „Java“ WayDienstag, 10. Mai 2011
  • - (void)setFrameSize:(NSSize)size { if (size.height!=0.0 && size.width!=0.0) { if (!NSEqualSizes(self.size,size)) { [super setFrameSize:size]; [mapItems makeObjectsPerformSelector: @selector(resize)]; } } } The „Ojective-C“ WayDienstag, 10. Mai 2011
  • - (void)setFrameSize:(NSSize)size { if (size.height!=0.0 && size.width!=0.0) { if (!NSEqualSizes(self.size,size)) { [super setFrameSize:size]; [mapItems makeObjectsPerformSelector: @selector(resize)]; } } } The „Ojective-C“ WayDienstag, 10. Mai 2011
  • - (void)setFrameSize:(NSSize)size { if (size.height!=0.0 && size.width!=0.0) { if (!NSEqualSizes(self.size,size)) { [super setFrameSize:size]; [mapItems makeObjectsPerformSelector: @selector(resize)]; } } } The „Ojective-C“ WayDienstag, 10. Mai 2011
  • - (void)setFrameSize:(NSSize)size { if (size.height!=0.0 && size.width!=0.0) { if (!NSEqualSizes(self.size,size)) { [super setFrameSize:size]; [mapItems makeObjectsPerformSelector: @selector(resize)]; } } } The „Ojective-C“ WayDienstag, 10. Mai 2011
  • - (void)setFrameSize:(NSSize)size { if (size.height!=0.0 && size.width!=0.0) { if (!NSEqualSizes(self.size,size)) { [super setFrameSize:size]; [mapItems makeObjectsPerformSelector: @selector(resize)]; } } } The „Ojective-C“ WayDienstag, 10. Mai 2011
  • Java person.setFirstName(“John“); Objective-C [person setFirstName:@“John“]; „send Message“statt Methoden-AufrufDienstag, 10. Mai 2011
  • Java Person person = new Person(); Objective-C Person *p = [[Person alloc] init]; Objects sind dyn. allokierte Structs Achtung: D.h. keine ConstructorsDienstag, 10. Mai 2011
  • Objective-C - (id)init { self = [super init]; if (self != nil) { ... // spezifischer Code } return self; }   Objects sind dyn. allokierte Structs Achtung: gezeigte Steps sind PflichtDienstag, 10. Mai 2011
  • Java java.lang.String s = new String(“Java“) Objective-C NSString *s = [[NSString alloc] initWithString:@“Objective-C“]; Wer braucht schon Namespaces Achtung: Framework-PrefixDienstag, 10. Mai 2011
  • Objective-C Methoden – Deklaration in .h – Implementierung in .m – Instanzmethoden mit Prefix „-“ – Klassenmethoden mit Prefix „+“ – Kein Overloading, da Runtime über den Namen gehtDienstag, 10. Mai 2011
  • Java person.addAddress(address); person.addAddress(address, AdrType.HOME); Objective-C [person addAddress:address] [person addAddress:address withType:ADHome]; Kein Methode Overloading ...Dienstag, 10. Mai 2011
  • Java person.addAddress(address); person.addAddress(address, AdrType.HOME); Objective-C [person addAddress:address] [person addAddress:address withType:ADHome]; Kein Methode Overloading ...Dienstag, 10. Mai 2011
  • Java public void addAddress(Address adr, AdrType adrType); Objective-C - void addAddress:(Address*)adr withType:(ADType)adrType; Kein Methode Overloading ... Methodenname: addAddress:withTypeDienstag, 10. Mai 2011
  • Objective-C Klassen – Deklaration in .h – Implementierung in .m – @interface ... @end – @implementation ... @end – Instanzvariablen innerhalb { ... } – Methoden außerhalb { ... }Dienstag, 10. Mai 2011
  • Objective-C @interface Person: NSObject { int age; } - (int)age; - (void)setAge:(int)newAge; @end; Objective-C Interface (.h)Dienstag, 10. Mai 2011
  • Objective-C #import “Person.h“ @implementation Person - (int)age {return age}; - (void)setAge:(int)newAge { age = newAge; } ... @end; Objective-C Implementation (.m)Dienstag, 10. Mai 2011
  • Objective-C @interface Person: NSObject { BOOL aduld; } @property BOOL adult (...); @end; @implementation Person @synthesize adult; @end; property & syntheziseDienstag, 10. Mai 2011
  • Objective-C Qualifier – @private Sektion – @protected Sektion – @public Sektion – „private“ via fehlende Deklaration in .hDienstag, 10. Mai 2011
  • Objective-C „Fun-Club“ – Pointer – Memory Management – Missing GC (iOS Autorelease Pool) – Protocol (wie Java Interfaces) – Blocks („Closure-like“) – Selector („Reflection-like“) – Weak Linking („wenn-dann“)Dienstag, 10. Mai 2011
  • Objective-C „Fun-Club“ – Pointer – Memory Management – Missing GC (iOS Autorelease Pool) – Protocol (wie Java Interfaces) – Blocks („Closure-like“) – Selector („Reflection-like“) – Weak Linking („wenn-dann“)Dienstag, 10. Mai 2011
  • Objective-C Memory Management alloc: retain count =1 copy: retain count =1 retain: retain count +1 release: retain count -1 autorelease: retain count -1 (future)Dienstag, 10. Mai 2011
  • Objective-C Memory ManagementDienstag, 10. Mai 2011
  • Objective-C Memory ManagementDienstag, 10. Mai 2011
  • Objective-C Memory ManagementDienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • xCode InterfaceBuilder InstrumentsDienstag, 10. Mai 2011
  • >> xCode Code Diving ... >> IB >> InstrumentsDienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Alles halb so schlimm, aber ... ... ungewohnte Umgebung ... ungewohnte Sprache ... ungewohnte Tools ... ungewohnte StrategieDienstag, 10. Mai 2011
  • Und nicht vergessen, ... ... fast launch, short use ... tune your code ... tune your network „Build cool stuff and have fun!“Dienstag, 10. Mai 2011
  • Dienstag, 10. Mai 2011
  • Gibt es noch Fragen? Dann los ...Dienstag, 10. Mai 2011