In diesem Lernprogramm lernen Sie Java kennen, die Programmiersprache für die Entwicklung von Android-Anwendungen. Unser Ziel ist es, diejenigen, die bereits mit einer Programmiersprache wie PHP oder Objective-C vertraut sind, darauf vorzubereiten, dass Sie sich mit der Java-Programmiersprache gut auskennen und in die Android-App-Entwicklung eintauchen können. In diesem Tutorial erhalten Sie eine kurze Einführung in die Java-Grundlagen, einschließlich objektorientierter Programmierung, Vererbung und mehr. Wenn Sie noch nicht mit Java vertraut sind oder einfach nur die Details auf den neuesten Stand bringen wollen, dann ist dies die Tutorial-Serie für Sie!
Was die Voraussetzungen angeht, gehen wir davon aus, dass Sie verstehen, wie man programmiert (vielleicht in PHP, Visual Basic oder C ++), sich aber mit den Besonderheiten der Programmierung in der Java-Sprache nicht auskennt. Wir werden Sie nicht lehren, zu programmieren; Wir werden Ihnen anschauliche Beispiele für häufig verwendete Java-Sprachkonstrukte und -prinzipien geben und einige Android-spezifische Tipps und Tricks aufzeigen.
Technisch benötigen Sie keine Tools, um dieses Tutorial abzuschließen, aber Sie werden sie sicherlich benötigen, um Android-Anwendungen zu entwickeln.
Um Android-Anwendungen (oder auch beliebige Java-Anwendungen) zu entwickeln, benötigen Sie eine Entwicklungsumgebung zum Schreiben und Erstellen von Anwendungen. Eclipse ist eine sehr beliebte Entwicklungsumgebung (IDE) für Java und die bevorzugte IDE für Android-Entwicklung. Es ist für Windows-, Mac- und Linux-Betriebssysteme kostenlos verfügbar.
Vollständige Anweisungen zur Installation von Eclipse (einschließlich der unterstützten Versionen) und des Android SDK finden Sie auf der Android-Entwicklerwebsite.
Android-Anwendungen werden mit der Sprache Java entwickelt. Das ist jetzt wirklich die einzige Option für native Anwendungen. Java ist eine sehr beliebte Programmiersprache, die von Sun Microsystems (jetzt im Besitz von Oracle) entwickelt wurde. Lange nach C und C ++ entwickelt, enthält Java viele der leistungsstarken Funktionen dieser mächtigen Sprachen und behebt einige ihrer Nachteile. Programmiersprachen sind jedoch nur so leistungsfähig wie ihre Bibliotheken. Diese Bibliotheken unterstützen Entwickler beim Erstellen von Anwendungen.
Einige der wichtigsten Funktionen von Java sind:
Android stützt sich stark auf diese Java-Grundlagen. Das Android SDK enthält viele Standard-Java-Bibliotheken (Datenstrukturbibliotheken, Mathematikbibliotheken, Grafikbibliotheken, Netzwerkbibliotheken und alles, was Sie sonst noch wollen) sowie spezielle Android-Bibliotheken, mit denen Sie großartige Android-Anwendungen entwickeln können.
Java ist aus verschiedenen Gründen leicht zu erlernen. Es gibt sicherlich keinen Mangel an Java-Ressourcen, die Ihnen beim Erlernen der Sprache helfen, einschließlich Websites, Lernprogrammen, Büchern und Klassen. Java ist eine der am meisten diskutierten, gelehrten und verwendeten Programmiersprachen der Welt. Es wird für viele verschiedene Arten von Programmierprojekten verwendet, unabhängig von ihrer Größe, von Webanwendungen über Desktopanwendungen bis hin zu mobilen Anwendungen.
Wenn Sie aus einem traditionellen Programmierhintergrund wie C oder C ++ kommen, werden Sie die Java-Syntax ziemlich ähnlich finden. Wenn dies nicht der Fall ist, sollten Sie beruhigt wissen, dass Sie eine der am einfachsten zu lernenden Sprachen gewählt haben. Sie sind in kürzester Zeit einsatzbereit.
Schließlich ist Java eine der am besten lesbaren Sprachen da draußen, was bedeutet, dass eine Person, die sich mit Programmierung nicht auskennt, oft Java-Code betrachten und zumindest ahnen kann, was sie tut. Betrachten Sie das folgende Beispiel:
char character = 'a'; if (Zeichen == 'a') doSomething (); else doSomethingElse ();
Wenn Sie den Code einfach laut lesen, können Sie ziemlich genau feststellen, dass dieses Codefragment gerade funktioniert. Es gibt eine Variable mit einem Buchstaben, die als Zeichen bezeichnet wird. Wenn die Zeichenvariable dem Buchstaben a entspricht, machen wir etwas (rufen Sie die Methode doSomething () auf), andernfalls tun Sie etwas anderes (indem Sie die Methode doSomethingElse () aufrufen)..
Bei vielen Programmiersprachen müssen Sie einen Compiler verwenden, um Ihren Code in Maschinensprache zu reduzieren, die das Gerät verstehen kann. Während dies gut und gut ist, verwenden verschiedene Geräte unterschiedliche Maschinensprachen. Dies bedeutet, dass Sie Ihre Anwendungen möglicherweise für jedes andere Gerät oder jede Maschinensprache kompilieren müssen. In anderen Worten, Ihr Code ist nicht sehr portabel. Dies ist bei Java nicht der Fall. Die Java-Compiler konvertieren Ihren Code aus von Menschen lesbaren Java-Quelldateien in einen so genannten Bytecode in der Java-Welt. Diese werden von einer Java Virtual Machine interpretiert, die so funktioniert, als würde eine physische CPU mit Maschinencode arbeiten, um den kompilierten Code tatsächlich auszuführen. Obwohl dies als ineffizient erscheinen mag, wurde viel Mühe gegeben, diesen Prozess sehr schnell und effizient zu gestalten. Diese Bemühungen haben sich bei dieser Java-Leistung in der Regel hinter C / C ++ gelohnt, und zwar im Vergleich der allgemeinen Sprachleistung.
Android-Anwendungen werden auf einer speziellen virtuellen Maschine namens Dalvik VM ausgeführt. Während die Details dieser VM für den Durchschnittsentwickler unwichtig sind, kann es hilfreich sein, die Dalvik-VM als eine Blase zu betrachten, in der Ihre Android-Anwendung ausgeführt wird, sodass Sie sich keine Gedanken darüber machen müssen, ob das Gerät ein Motorola-Droid ist HTC Evo oder der neueste Toaster mit Android. Sie interessieren sich nicht, solange das Gerät Dalvik VM-freundlich ist - und dies ist die Aufgabe des Geräteherstellers, nicht Ihre.
Lassen Sie uns diese Bubble-Idee noch ein bisschen weiterführen. Da Java-Anwendungen in der Blase einer virtuellen Maschine ausgeführt werden, sind sie von der zugrunde liegenden Gerätehardware isoliert. Daher kann eine virtuelle Maschine die Codeausführung auf eine sichere Weise einkapseln, enthalten und verwalten, verglichen mit Sprachen, die direkt in Maschinencode arbeiten. Die Android-Plattform geht noch einen Schritt weiter. Jede Android-Anwendung läuft auf dem (Linux-basierten) Betriebssystem mit einem anderen Benutzerkonto und in einer eigenen Instanz der Dalvik-VM. Android-Anwendungen werden vom Betriebssystem genau überwacht und heruntergefahren, wenn sie nicht gut abgespielt werden (z. B. zu viel Rechenleistung verwenden, nicht mehr reagieren, Ressourcen verschwenden usw.). Daher ist es wichtig, Anwendungen zu entwickeln, die stabil und reaktionsschnell sind. Anwendungen können über genau definierte Protokolle miteinander kommunizieren.
Wie viele Sprachen ist Java immer noch eine kompilierte Sprache, auch wenn sie nicht bis hin zum Maschinencode kompiliert wird. Dies bedeutet, dass Sie als Entwickler Ihre Android-Projekte kompilieren und für die Bereitstellung auf Geräten verpacken müssen. Die Eclipse-Entwicklungsumgebung (in Verbindung mit dem Android-Entwicklungs-Plug-In) macht dies ziemlich schmerzlos. In Eclipse ist die automatische Kompilierung häufig standardmäßig aktiviert. Dies bedeutet, dass Eclipse bei jedem Speichern einer Projektdatei die Änderungen für Ihr Anwendungspaket erneut kompiliert. Sie sehen sofort Fehler beim Kompilieren. Eclipse interpretiert Java auch während der Eingabe, bietet praktische Code-Färbung und -Formatierung sowie viele Arten von Fehlern. Oft können Sie auf den Fehler klicken und Eclipse automatisch einen Tippfehler korrigieren oder eine Importanweisung hinzufügen oder einen Methodenstub für Sie bereitstellen, der viele Eingaben erspart.
Sie können Ihren Code immer noch manuell kompilieren, wenn Sie dies wünschen. In Eclipse finden Sie die Build-Einstellungen unter dem Projektmenü. Wenn Sie "Automatisch erstellen" aktiviert haben, können Sie immer noch die Option "Bereinigen ..." wählen, mit der Sie alle Dateien vollständig neu erstellen können. Wenn "Automatisch erstellen" deaktiviert ist, sind die Menüoptionen "Alle erstellen" und "Projekt erstellen" aktiviert. "Alles erstellen" bedeutet, alle Projekte im Arbeitsbereich zu erstellen. Sie können viele Projekte in einem Eclipse-Arbeitsbereich einrichten.
Der Erstellungsprozess für normale Java-Projekte führt zu einer Datei mit der Erweiterung JAR - Java ARSchnittlauch. Android-Anwendungen verwenden JAR-Dateien und packen sie für die Bereitstellung auf Geräten als EINandroid PacKAltersdateien mit der Erweiterung .apk. Diese Formate umfassen nicht nur Ihren kompilierten Java-Code, sondern auch alle anderen Ressourcen, die Ihre Anwendung benötigt, wie z. B. Zeichenfolgen, Bilder oder Audiodateien, sowie die Anwendungsmanifestdatei AndroidManifest.xml. Die Android-Manifestdatei ist eine Datei, die von allen Android-Anwendungen benötigt wird, um Konfigurationsdetails für Ihre App zu definieren.
Okay. Zeit für eine sehr kurze und 20.000-Fuß-Sicht objektorientierter Programmierung (OOP). OOP ist ein Programmierstil oder eine Programmiermethode, die auf der Definition von Datenstrukturen beruht, die als Objekte bezeichnet werden. Für diejenigen, die in OOP neu sind, kann man sich ein Objekt wie einen benutzerdefinierten Datentyp vorstellen. Beispielsweise haben Sie möglicherweise ein Dog-Objekt, das den Bauplan eines generischen Hundes mit einem Namen, einer Rasse und einem Geschlecht darstellt. Sie können dann verschiedene Instanzen des Dog-Objekts erstellen, um bestimmte Hunde darzustellen. Jedes Dog-Objekt muss durch Aufrufen seines eigenen erstellt werden Konstrukteur (Eine Methode, die denselben Namen wie das Objekt selbst hat und möglicherweise Parameter zum Festlegen von Anfangswerten hat). Die folgenden Dog-Objekte verwenden beispielsweise einen Konstruktor mit drei Parametern (Name, Rasse, Geschlecht):
Hund dog1 = neuer Hund ("Lassie", Collie, weiblich); Hund dog2 = neuer Hund ("Fifi", Pudel, weiblich); Hund dog3 = neuer Hund ("Asta", Foxterrier, männlich);
Wo ist dieses Dog-Objekt definiert? Nun, hier müssen wir mit der Definition einiger grundlegender Bausteine der Java-Programmiersprache beginnen. EIN Klasse liefert eine Definition für ein Objekt. Daher gibt es irgendwo eine Hundeklasse, die entweder von Ihnen oder in einer Bibliothek definiert wurde. Im Allgemeinen wird eine Klasse in einer eigenen Datei definiert, wobei der Dateiname mit dem Klassennamen übereinstimmt (z. B. Dog.java). Es gibt Ausnahmen zu dieser Regel, z. B. Klassen, die in anderen Klassen definiert sind (wenn eine Klasse innerhalb einer Klasse deklariert ist, wird sie im Allgemeinen nur für die Verwendung in der übergeordneten Klasse als Hilfsklasse definiert und als. Bezeichnet.) innere Klasse).
Wenn Sie ein Objekt aus einer anderen Klasse referenzieren möchten, müssen Sie ein Import-Anweisung Ganz oben in Ihrer Klassendatei, ähnlich wie Sie eine # include-Anweisung in einer kompilierten Sprache wie C verwenden würden.
Eine Klasse beschreibt normalerweise die Daten und das Verhalten eines Objekts. Das Verhalten wird mit class definiert Methoden. Methode ist der gebräuchliche Begriff für eine Subroutine in einer OOP-Sprache. Viele gängige Objektklassen werden in gemeinsam genutzten Klassenbibliotheken wie Software Development Kits (SDKs) definiert, während andere von Ihnen als Entwickler für Ihre eigenen Zwecke definiert werden. Software wird dann erstellt, indem Objektinstanzen auf unterschiedliche Weise verwendet und bearbeitet werden.
Bitte beachten Sie, dass dies eine sehr verallgemeinerte Definition von OOP ist. Es gibt ganze Bücher zu diesem Thema. Wenn Sie mehr über OOP erfahren möchten, finden Sie hier einige Ressourcen, die Sie sich ansehen sollten:
Hinweis: In diesem Lernprogramm verwenden wir viele verschiedene Begriffe. Es gibt mehrere Möglichkeiten, auf ein gegebenes Konzept zu verweisen (z. B. Superklasse vs. Elternklasse), was für diejenigen, die neu in der objektorientierten Programmierung sind, verwirrend ist. Verschiedene Entwickler verwenden unterschiedliche Begriffe. Daher haben wir versucht, gegebenenfalls Synonyme zu erwähnen. Die Entscheidung, welche Begriffe Sie verwenden, ist eine persönliche Entscheidung.
Hier ist noch ein anderer wichtig Java-Konzept, auf das Sie viel stoßen werden: Erbe. Vererbung bedeutet, dass Java-Klassen (und damit Objekte) in Hierarchien mit niedrigeren, spezifischeren Klassen in der Hierarchie organisiert werden können erben Verhalten und Eigenschaften von höheren, allgemeineren Klassen.
Dieses Konzept wird am besten durch ein Beispiel veranschaulicht. Nehmen wir an, wir entwickeln eine Java-Anwendung, um ein Aquarium zu simulieren. In diesem Aquarium gibt es einige Fische. Daher können wir eine Klasse definieren, um einen Fisch darzustellen. Diese Klasse namens Fish kann einige Datenfelder (auch Attribute oder Klassenmitgliedervariablen genannt) enthalten, um ein Fischobjekt zu beschreiben: Art, Farbe und Größe. sowie ein Teil seines Verhaltens in Form von Methoden (auch als Unterprogramme oder Funktionen in Verfahrenssprachen bezeichnet), wie eat (), sleep () und makeBabyFish ()..
Eine spezielle Art von Methode, genannt a Konstrukteur, wird verwendet, um ein Objekt zu erstellen und zu initialisieren; Konstruktoren haben den gleichen Namen wie ihre Klasse und können Parameter enthalten. Die folgende Fish-Klasse verfügt über zwei Konstruktoren: einen zum Erstellen eines generischen Fish-Objekts und einen zum Erstellen eines bestimmten Fish-Objekts mit einigen Anfangsdaten. Sie werden auch sehen, dass die Fish-Klasse zwei eat () -Methoden hat: eine zum zufälligen Essen und eine andere zum Essen eines anderen Fisches, die durch eine andere Instanz der Fish-Klasse dargestellt wird:
öffentliche Klasse Fish private String mSpecies; private Zeichenfolge mColor; private int mSize; Fish () // generic fish mSpecies = "unknown"; mColor = "unbekannt"; mSize = 0; Fisch (Schnurarten, Schnurfarbe, int. Größe) mSpezies = Spezies; mColor = Farbe; mSize = Größe; public void eat () // etwas Algen essen; public void eat (Fisch fishToEat) // einen anderen Fisch essen! ; public void sleep () // sleep; public void makeBabyFish (Fish fishSpouse, int numBabies) // Mit Fish ehegattete Babys aus Babyfisch machen;
Klassen können in Hierarchien organisiert werden, wobei a abgeleitete Klasse (oder Unterklasse) enthält alle Funktionen von übergeordnete Klasse (oder Oberklasse), aber verfeinert und fügt sie hinzu, um ein spezifischeres Objekt mit dem Schlüsselwort extend zu definieren. Dies wird Vererbung genannt.
Beispielsweise kann die Klasse Fish zwei Unterklassen haben: FreshwaterFish und SaltwaterFish. Diese Unterklassen verfügen zwar über alle Funktionen der Fish-Klasse, könnten jedoch die Objekte durch neue Attribute und Verhaltensweisen oder geänderte Verhaltensweisen der übergeordneten Klasse Fish weiter anpassen. Zum Beispiel kann die FreshwaterFish-Klasse Informationen über die Art der Süßwasserumgebung enthalten (z. B. Fluss, See, Teich oder Pfütze). In ähnlicher Weise kann die SaltwaterFish-Klasse die makeBabyFish () -Methode so anpassen, dass der Fisch seinen Partner nach der Zucht frisst (wie in der Superklasse definiert), indem er den Override-Mechanismus wie folgt verwendet:
public class SaltwaterFish erweitert Fish @Override public void makeBabyFish (Fish fishSpouse, int numBabies) // Aufruf der übergeordneten Methode super.makeBabyFish (fishSpouse, numBabies); // eat mate eat (fishSpouse);
In Java können Sie das Objektverhalten in sogenannten Schnittstellen organisieren. Während eine Klasse ein Objekt definiert, definiert eine Schnittstelle ein Verhalten, das auf ein Objekt angewendet werden kann. Zum Beispiel könnten wir eine Schwimmer-Schnittstelle definieren, die eine Reihe von Methoden bereitstellt, die für alle schwimmenden Objekte gelten, unabhängig davon, ob es sich dabei um Fische, Otter oder eintauchbare Androiden handelt. Die Swimmer-Schnittstelle kann vier Methoden angeben: startSwimming (), stopSwimming (), dive () und surface ().
öffentliche Schnittstelle Swimmer void startSwimming (); void stopSwimming (); ungültiger Tauchgang (); leere Oberfläche ();
Eine Klasse wie Fish könnte dann die Schwimmerschnittstelle (mit dem Schlüsselwort implements) implementieren und Implementierungen des Schwimmverhaltens bereitstellen:
public class Fish implementiert swimmer // Implementiert die vier Methoden innerhalb der Swimmer-Benutzeroberfläche.
Anschließend können Klassenhierarchien wie unsere Fischklassen organisiert werden Pakete. Ein Paket besteht einfach aus einer Reihe von Klassen und Schnittstellen, die gebündelt sind. Entwickler verwenden Namespaces, um Pakete eindeutig zu benennen. Zum Beispiel könnten wir com.mamlambo.aquarium oder com.ourclient.project.subproject als Paketnamen verwenden, um den Überblick über unsere fischbezogenen Klassen zu behalten.
Beeindruckend! Sie haben gerade einen Absturzkurs in Java für Android-Entwicklung begonnen. Wir haben hier ziemlich viel Material behandelt, also lassen Sie die Dinge ein wenig aus, bevor Sie mit der nächsten Lektion dieser Tutorialserie fortfahren. In Lektion 2 konzentrieren wir uns auf die wichtigsten Details der Java-Syntax.
Sie haben nur die Oberfläche der Java-Entwicklung für Android-Entwicklung zerkratzt. In den anderen tollen Tutorials zu Mobiletuts + erfahren Sie mehr über die Entwicklung von Java und Android. Viel Glück!
Die mobilen Entwickler Lauren Darcey und Shane Conder haben mehrere Bücher zur Android-Entwicklung mitgeschrieben: ein ausführliches Programmierbuch mit dem Titel Android Wireless-Anwendungsentwicklung und Sams TeachYourself Entwicklung von Android-Anwendungen in 24 Stunden. Wenn sie nicht schreiben, verbringen sie ihre Zeit damit, mobile Software in ihrem Unternehmen zu entwickeln und Beratungsdienste anzubieten. Sie können sie per E-Mail an [email protected], über ihren Blog unter androidbook.blogspot.com und über Twitter @androidwireless erreichen.
Wenn Sie mit der Android-Entwicklung beginnen möchten, ist eine Android-App-Vorlage ein hervorragender Ausgangspunkt. Schauen Sie sich die Auswahl auf Envato Market an, oder suchen Sie spezifischer nach Java-Artikeln.
Android-App-Vorlagen auf Envato MarketSie können auch Android-Entwickler in Envato Studio finden, um Sie von der Gestaltung der Benutzeroberfläche bis zur Erstellung einer nativen Android-App zu unterstützen.
Android-Entwickler bei Envato Studio