Java Language Samouczek
Pierwsze kroki w języku Java
Szukaj…
Uwagi
Językiem programowania Java jest ...
Ogólnego zastosowania : jest przeznaczony do pisania oprogramowania w wielu różnych domenach aplikacji i nie posiada specjalistycznych funkcji dla żadnej konkretnej domeny.
Oparte na klasach: jego struktura obiektowa jest zdefiniowana w klasach. Instancje klas zawsze mają te pola i metody określone w ich definicjach klas (patrz Klasy i obiekty ). Jest to w przeciwieństwie do języków nie opartych na klasach, takich jak JavaScript.
Typ statyczny : kompilator sprawdza w czasie kompilacji, czy typy zmiennych są przestrzegane. Na przykład, jeśli metoda oczekuje argumentu typu
String
, argument ten musi w rzeczywistości być łańcuchem po wywołaniu metody.Zorientowanie obiektowe : większość rzeczy w programie Java to instancje klas, tj. Pakiety stanów (pól) i zachowania (metody, które działają na danych i tworzą interfejs obiektu do świata zewnętrznego).
Przenośny : Można go skompilować na dowolnej platformie z
javac
a pliki klas wynikowych można uruchomić na dowolnej platformie z maszyną JVM.
Java ma umożliwić programistom aplikacji „pisanie raz, uruchamianie w dowolnym miejscu” (WORA), co oznacza, że skompilowany kod Java może działać na wszystkich platformach obsługujących Javę bez potrzeby ponownej kompilacji.
Kod Java jest kompilowany do kodu bajtowego (pliki .class
), które z kolei są interpretowane przez maszynę wirtualną Java (JVM). Teoretycznie kod bajtowy utworzony przez jeden kompilator Java powinien działać w ten sam sposób na dowolnej maszynie JVM, nawet na innym komputerze. JVM może (i w rzeczywistych programach) zdecydować się na kompilację do natywnych poleceń maszynowych często wykonywanych części kodu bajtowego. Nazywa się to „kompilacją Just-in-time (JIT)”.
Edycje i wersje Java
Istnieją trzy „edycje” Java zdefiniowane przez Sun / Oracle:
- Java Standard Edition (SE) to edycja przeznaczona do użytku ogólnego.
- Java Enterprise Edition (EE) dodaje szereg udogodnień do budowania usług „klasy korporacyjnej” w Javie. Java EE jest objęta osobno .
- Java Micro Edition (ME) jest oparty na podzestawie Java SE i jest przeznaczony do użytku na małych urządzeniach z ograniczonymi zasobami.
Osobny temat dotyczy edycji Java SE / EE / ME .
Każde wydanie ma wiele wersji. Wersje Java SE są wymienione poniżej.
Instalowanie Java
Istnieje osobny temat dotyczący instalowania oprogramowania Java (edycja standardowa) .
Kompilowanie i uruchamianie programów Java
Istnieją osobne tematy na:
- Kompilowanie kodu źródłowego Java
- Wdrożenie Java, w tym tworzenie plików JAR
- Uruchamianie aplikacji Java
- Ścieżka klas
Co dalej?
Oto linki do przedmiotów, aby kontynuować naukę i rozumienie języka programowania Java. Tematy te są podstawami programowania w Javie na początek.
- Prymitywne typy danych w Javie
- Operatory w Javie
- Ciągi w Javie
- Podstawowe struktury sterowania w Javie
- Klasy i obiekty w Javie
- Tablice w Javie
- Standardy kodu Java
Testowanie
Chociaż Java nie obsługuje testowania w bibliotece standardowej, istnieją biblioteki innych firm zaprojektowane do obsługi testowania. Dwie najpopularniejsze biblioteki do testowania jednostek to:
- JUnit ( oficjalna strona )
- TestNG ( oficjalna strona )
Inny
- Wzory projektowe dla Java są omówione we wzorcach projektowych .
- Programowanie dla Androida jest objęte Androidem .
- Technologie Java Enterprise Edition są objęte programem Java EE .
- Technologie Oracle JavaFX są objęte JavaFX .
1. W sekcji Wersje data wycofania (bezpłatna) to data, kiedy Oracle przestanie publikować dalsze aktualizacje Java SE na swoich publicznych stronach pobierania. Klienci, którzy potrzebują stałego dostępu do krytycznych poprawek błędów i poprawek bezpieczeństwa, a także ogólnej konserwacji Java SE, mogą uzyskać długoterminowe wsparcie dzięki Oracle Java SE Support .
Wersje
Wersja Java SE | Kryptonim | Koniec życia (bezpłatny 1 ) | Data wydania |
---|---|---|---|
Java SE 9 (wczesny dostęp) | Żaden | przyszłość | 2017-07-27 |
Java SE 8 | Pająk | przyszłość | 18.03.2014 |
Java SE 7 | Delfin | 14.04.2015 | 2011-07-28 |
Java SE 6 | Mustang | 16.04.2013 | 2006-12-23 |
Java SE 5 | Tygrys | 04.11.2009 | 2004-10-04 |
Java SE 1.4 | Merlin | przed 04.11.2009 | 2002-02-06 |
Java SE 1.3 | Pustułka | przed 04.11.2009 | 2000-05-08 |
Java SE 1.2 | Plac zabaw | przed 04.11.2009 | 1998-12-08 |
Java SE 1.1 | Żaden | przed 04.11.2009 | 19 lutego 1997 r |
Java SE 1.0 | Dąb | przed 04.11.2009 | 1996-01-21 |
Tworzenie pierwszego programu Java
Utwórz nowy plik w edytorze tekstu lub IDE o nazwie HelloWorld.java
. Następnie wklej ten blok kodu do pliku i zapisz:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Uwaga: Aby Java mogła rozpoznać tę public class
(i nie zgłosić błędu czasu kompilacji ), nazwa pliku musi być taka sama jak nazwa klasy (w tym przykładzie HelloWorld
) z rozszerzeniem .java
. Przed nim powinien być również modyfikator public
dostępu.
Konwencje nazewnictwa zalecają klas Java rozpoczynać od znaku wielkiej, i być w wielbłąda przypadku formatu (w którym pierwsza litera każdego słowa jest aktywowane). Konwencje odradzają podkreślenia ( _
) i znaki dolara ( $
).
Aby skompilować, otwórz okno terminala i przejdź do katalogu HelloWorld.java
:
cd /path/to/containing/folder/
Uwaga: cd jest poleceniem terminalu służącym do zmiany katalogu.
Wpisz javac
a następnie nazwę pliku i rozszerzenie w następujący sposób:
$ javac HelloWorld.java
Często zdarza się, że błąd 'javac' is not recognized as an internal or external command, operable program or batch file.
nawet jeśli zainstalowałeś JDK
i jesteś w stanie uruchomić program z IDE
np. eclipse
itp. Ponieważ ścieżka nie jest domyślnie dodawana do środowiska.
Aby rozwiązać ten problem w javac.exe
Windows, najpierw spróbuj javac.exe
ścieżki javac.exe
, najprawdopodobniej w C:\Program Files\Java\jdk(version number)\bin
. Następnie spróbuj uruchomić go poniżej.
$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
Poprzednio, gdy javac
do javac
, było tak samo jak powyżej polecenia. Tylko w takim przypadku Twój OS
wiedział, gdzie mieszka javac
. Powiedzmy więc teraz, że nie musisz za każdym razem wpisywać całej ścieżki. Musielibyśmy dodać to do naszej PATH
Aby edytować zmienną środowiskową PATH
w systemie Windows XP / Vista / 7/8/10:
- Panel sterowania ⇒ System ⇒ Zaawansowane ustawienia systemu
- Przejdź do zakładki „Zaawansowane” ⇒ Zmienne środowiskowe
- W „Zmiennych systemowych” przewiń w dół, aby wybrać „ŚCIEŻKA” ⇒ Edytuj
Nie możesz tego cofnąć, więc bądź ostrożny. Najpierw skopiuj istniejącą ścieżkę do notatnika. Następnie, aby uzyskać dokładną ŚCIEŻKĘ do urządzenia javac
ręcznie wyszukaj folder, w którym znajduje się javac
kliknij pasek adresu, a następnie skopiuj go. Powinno to wyglądać jak c:\Program Files\Java\jdk1.8.0_xx\bin
W polu „Wartość zmiennej” wklej to PRZED PRZED wszystkimi istniejącymi katalogami, a następnie średnikiem (;). NIE USUWAJ żadnych istniejących wpisów.
Variable name : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
Teraz powinno to rozwiązać.
W przypadku systemów opartych na systemie Linux spróbuj tutaj .
Uwaga: Komenda javac
wywołuje kompilator Java.
Kompilator wygeneruje następnie plik kodu bajtowego o nazwie HelloWorld.class
który można wykonać na wirtualnej maszynie Java (JVM) . Kompilator języka programowania Java, javac
, odczytuje pliki źródłowe napisane w języku programowania Java i kompiluje je do plików klasy bytecode
. Opcjonalnie, kompilator może również przetwarzać adnotacje znajdują się w klasie źródłowych i plików przy użyciu Pluggable
API Adnotacja Processing. Kompilator jest narzędziem wiersza polecenia, ale można go również wywołać za pomocą interfejsu API kompilatora Java.
Aby uruchomić program, wpisz java
a następnie nazwę klasy zawierającej main
metodę ( HelloWorld
w naszym przykładzie). Zwróć uwagę, jak pominięto .class
:
$ java HelloWorld
Uwaga: Komenda java
uruchamia aplikację Java.
Spowoduje to wyświetlenie na konsoli:
Witaj świecie!
Udało ci się zakodować i zbudować swój pierwszy program Java!
Uwaga: Aby komendy Java ( java
, javac
itp.) javac
rozpoznane, musisz się upewnić:
- JDK jest zainstalowany (np. Oracle , OpenJDK i inne źródła)
- Twoje zmienne środowiskowe są poprawnie skonfigurowane
Będziesz musiał użyć kompilatora ( javac
) i executora ( java
) dostarczonego przez JVM. Aby dowiedzieć się, które wersje zainstalowałeś, wpisz java -version
i javac -version
w wierszu polecenia. Numer wersji twojego programu zostanie wydrukowany w terminalu (np. 1.8.0_73
).
Bliższe spojrzenie na program Hello World
Program „Hello World” zawiera jeden plik, który składa się z definicji klasy HelloWorld
, metody main
i instrukcji wewnątrz metody main
.
public class HelloWorld {
class
kluczowe class
rozpoczyna definicję klasy dla klasy o nazwie HelloWorld
. Każda aplikacja Java zawiera co najmniej jedną definicję klasy ( Więcej informacji o klasach ).
public static void main(String[] args) {
Jest to metoda punktu wejścia (zdefiniowana przez jej nazwę i podpis public static void main(String[])
), z której JVM
może uruchomić twój program. Każdy program Java powinien go mieć. To jest:
-
public
: oznacza, że metodę można wywołać również z dowolnego miejsca spoza programu. Zobacz Widoczność, aby uzyskać więcej informacji na ten temat. -
static
: oznacza, że istnieje i może być uruchamiany sam (na poziomie klasy bez tworzenia obiektu). -
void
: co oznacza, że nie zwraca żadnej wartości. Uwaga: W przeciwieństwie do C i C ++, gdzie oczekuje się kodu powrotu, takiego jakint
(Java toSystem.exit()
).
Ta główna metoda akceptuje:
- Tablica (zwykle nazywana
args
) ciąguString
s przekazywana jako argumenty do funkcji głównej (np. Z argumentów wiersza poleceń ).
Prawie wszystko to jest wymagane w przypadku metody punktu wejścia Java.
Części nie wymagane:
- Nazwa
args
jest nazwą zmiennej, więc można ją nazwać dowolną nazwą, chociaż zwykle nazywa się jąargs
. - To, czy typem parametru jest tablica ( Argumenty
String[] args
) czy Varargs ( ArgumentyString... args
) nie ma znaczenia, ponieważ tablice można przekazywać do varargs.
Uwaga: Pojedyncza aplikacja może mieć wiele klas zawierających metodę punktu wejścia ( main
). Punkt wejścia aplikacji jest określony przez nazwę klasy przekazaną jako argument polecenia java
.
Wewnątrz głównej metody widzimy następujące oświadczenie:
System.out.println("Hello, World!");
Podzielmy tę instrukcję element po elemencie:
Element | Cel, powód |
---|---|
System | oznacza to, że kolejne wyrażenie wywoła klasę System z pakietu java.lang . |
. | jest to „operator kropkowy”. Operatorzy kropkowi zapewniają dostęp do członków klas 1 ; tj. jego pola (zmienne) i metody. W tym przypadku, to operator kropki pozwala odwołać out pola statycznego w System klasy. |
out | jest to nazwa pola statycznego typu PrintStream w klasie System zawierającej standardową funkcjonalność wyjściową. |
. | to kolejny operator kropkowy. Ten operator kropki zapewnia dostęp do metody println w zmiennej out . |
println | to nazwa metody w klasie PrintStream. W szczególności ta metoda drukuje zawartość parametrów do konsoli i wstawia nowy wiersz po. |
( | ten nawias wskazuje, że uzyskiwany jest dostęp do metody (a nie pola) i rozpoczyna przekazywanie parametrów do metody println . |
"Hello, World!" | to jest String dosłowny, który jest przekazywany jako parametr do println metody. Podwójne cudzysłowy na każdym końcu ograniczają tekst jako ciąg. |
) | ten nawias oznacza zamknięcie parametrów przekazywanych do metody println . |
; | ten średnik oznacza koniec instrukcji. |
Uwaga: Każda instrukcja w Javie musi kończyć się średnikiem ( ;
).
Ciało metody i ciało klasy są następnie zamykane.
} // end of main function scope
} // end of class HelloWorld scope
Oto kolejny przykład demonstrujący paradygmat OO. Modelujmy drużynę piłkarską z jednym (tak, jednym!) Członkiem. Może być ich więcej, ale omówimy to, gdy dojdziemy do tablic.
Najpierw zdefiniujmy naszą klasę Team
:
public class Team {
Member member;
public Team(Member member) { // who is in this Team?
this.member = member; // one 'member' is in this Team!
}
}
Teraz zdefiniujmy naszą klasę Member
:
class Member {
private String name;
private String type;
private int level; // note the data type here
private int rank; // note the data type here as well
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
}
Dlaczego używamy tutaj private
? Cóż, jeśli ktoś chciałby poznać twoje imię, powinien zapytać cię bezpośrednio, zamiast sięgać do kieszeni i wyciągać kartę ubezpieczenia społecznego. To private
robi coś takiego: uniemożliwia zewnętrznym bytom dostęp do twoich zmiennych. Możesz zwrócić private
członków tylko poprzez funkcje pobierające (pokazane poniżej).
Po zebraniu wszystkiego i dodaniu metod pobierających i metody głównej, jak omówiono wcześniej, mamy:
public class Team {
Member member;
public Team(Member member) {
this.member = member;
}
// here's our main method
public static void main(String[] args) {
Member myMember = new Member("Aurieel", "light", 10, 1);
Team myTeam = new Team(myMember);
System.out.println(myTeam.member.getName());
System.out.println(myTeam.member.getType());
System.out.println(myTeam.member.getLevel());
System.out.println(myTeam.member.getRank());
}
}
class Member {
private String name;
private String type;
private int level;
private int rank;
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
/* let's define our getter functions here */
public String getName() { // what is your name?
return this.name; // my name is ...
}
public String getType() { // what is your type?
return this.type; // my type is ...
}
public int getLevel() { // what is your level?
return this.level; // my level is ...
}
public int getRank() { // what is your rank?
return this.rank; // my rank is
}
}
Wynik:
Aurieel
light
10
1
Po raz kolejny main
metodą wewnątrz klasy Test
jest punkt wejścia do naszego programu. Bez main
metody nie możemy powiedzieć maszynie wirtualnej Java (JVM), od której zacząć wykonywanie programu.
1 - Ponieważ klasa HelloWorld
ma niewielki związek z klasą System
, może uzyskiwać dostęp tylko do danych public
.