Java LanguagePierwsze kroki w języku Java


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:

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.

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:

Inny

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!");
    }
}
 

Uruchom na żywo na Ideone

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ć:

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 jak int (Java to System.exit() ).

Ta główna metoda akceptuje:

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 ( Argumenty String... 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
 

Uruchom na ideone

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 .