Literatura in podcast o Javi

Poglejte si dve prosto dostopni e-knjigi o osnovah programiranja v Javi. Priložen pa je tudi podcast narejen s pomočjo Google Notebook LM AI orodja, ki obravnava vsebino omenjenih knjig.

Ključni koncepti programskega jezika Java

1.Uvod

  • JDK, JRE in JVM: Vsi trije viri poudarjajo pomembnost razumevanja teh temeljnih komponent.

  • JDK (Java Development Kit): Je orodje za razvijalce, ki vsebuje orodja za pisanje kode in JRE (Java Runtime Environment). Kot pravi "Java Full Course for free ☕": "jdk is an acronym for java development kit it contains developers tools to help us code as well as a jre a java runtime environment".

  • JRE (Java Runtime Environment): Vključuje knjižnice, orodja in JVM (Java Virtual Machine). "Java Full Course for free ☕" pojasnjuje: "which contains a library toolkits and our jvm which is another acronym for java virtual machine".

  • JVM (Java Virtual Machine): Je odgovoren za prevajanje bytecode v strojno kodo. "Java Full Course for free ☕" dodaja: "which translates by code for us to machine code".

  • "JavaKid8x11.pdf" omenja JRE kot program, ki se uporablja za zagon programa Java, in ga primerja z JVM: "This program is called Java Run-time Environment (JRE), or you may call it JVM like I did before."

  • Oba "Java Full Course for free ☕" in "learnjavatheeasyway.pdf" svetujeta prenos JDK za začetek razvoja.

  • Datoteke s končnico .java in .class: "JavaKid8x11.pdf" opisuje postopek ustvarjanja in zagona preprostega programa "HelloWorld". Poudarja, da se izvorna koda shrani v datoteko z imenom, ki se konča z .java (npr. HelloWorld.java), po uspešnem prevajanju pa se ustvari datoteka .class (HelloWorld.class). "First, you’ll need to type the program and save it in a text file with a name ending in .java."

  • Prevajanje in zagon: Za prevajanje kode se uporablja ukaz javac, za zagon pa java. "JavaKid8x11.pdf" ponazarja:

  • cd \practice

  • javac HelloWorld.java

  • java HelloWorld

  • Poudarja se, da je pri zagonu programa (ukaz java) treba uporabiti ime datoteke brez končnice .class, in da je Java občutljiva na velike in male črke. "Have you noticed that this time you’ve used the program java instead of javac?" in "Keep in mind that Java does not treat capital and small letters the same".

2. Osnovni podatkovni tipi in spremenljivke:

  • Vsi viri pokrivajo osnovne podatkovne tipe v Javi.

  • Cela števila: "Java Full Course for free ☕" omenja integer, "JavaKid8x11.pdf" pa našteva byte, short, int in long.

  • Decimalna števila: "Java Full Course for free ☕" obravnava float (zahteva pripono f pri dodeljevanju vrednosti, npr. 3.14f) in double (večja natančnost, pripona ni potrebna). "people tend to use doubles more because they have more precision and then you do not need this f at the end". "JavaKid8x11.pdf" prav tako omenja float in double.

  • Logične vrednosti: "Java Full Course for free ☕" predstavlja boolean, ki lahko hrani true ali false. "boolean z equals this holds either true or false". "JavaKid8x11.pdf" ga imenuje "logical data type called boolean that allows only two values: true or false."

  • Znakovni tip: "JavaKid8x11.pdf" omenja char za shranjevanje enega znaka. "One data type for storing a single character – char."

  • Deklaracija in inicializacija spremenljivk: "JavaKid8x11.pdf" prikazuje, kako deklarirati (npr. int x; double y;) in inicializirati (dodeliti začetno vrednost) spremenljivke (npr. int chairs = 12; boolean playSound = false;). "You can assign an initial value to a variable during its declaration and this is called variable initialization".

  • Aritmetični operatorji: "Java Full Course for free ☕" in "JavaKid8x11.pdf" demonstrirata osnovne aritmetične operacije (+, -, *, /, % - modulus za ostanek pri deljenju) na spremenljivkah. "so we can change the value of the friends variable by using an arithmetic expression so let's say that we make a new friend so we're going to add one to my variable of friends".

3. Kontrolne strukture:

  • if stavek: "Java Full Course for free ☕" ne omenja eksplicitno if stavka, medtem ko "JavaKid8x11.pdf" podrobno razlaga uporabo if in else za sprejemanje odločitev v programu na podlagi logičnih pogojev. "Java has an if statement that checks if a particular expression is true or false. Based on the result of this expression, your program execution executes the matching portion of the code or skips it." Primer z diskontom ponazarja uporabo if-else.

  • Logični operatorji: "JavaKid8x11.pdf" uvaja logične operatorje || (ali), && (in) in ! (ne) za kombiniranje in negiranje pogojev v if stavkih. "Sometimes, to make a decision you may need to check more than one conditional expression, for example if the name of the state is Texas or California".

  • switch stavek: "JavaKid8x11.pdf" opisuje switch stavek kot način za izvajanje različnih blokov kode glede na vrednost spremenljivke. Opozarja na pomembnost uporabe ključne besede break na koncu vsakega case, da se prepreči "padanje" skozi naslednje case-e. "do not forget to put the keyword break at the end of each case – the code has to jump out of the switch statement." Omejitve za tip spremenljivke v switch stavku so tudi omenjene.

  • Zanke (for, while, do-while):

  • "Java Full Course for free ☕" ne obravnava zank.

  • "JavaKid8x11.pdf" kratko omenja zanke while in do-while. do-while zanka preveri pogoj po izvedbi kode v bloku, kar zagotavlja, da se koda izvede vsaj enkrat. while zanka pa morda sploh ne bo izvedena, če je pogoj na začetku false. "do { // Your code goes here } while (counter< totalPlayers); such loops check an expression after executing the code between curly braces, which means that code in the loop will be executed at least once."

  • "learnjavatheeasyway.pdf" ponuja primer uporabe for zanke v JShell za tiskanje števil od 0 do 9. "jshell> for ( int x = 0; x < 10; x++ ) { System.out.println(x); }" Razlaga inicializacijo, pogoj in posodobitev znotraj for zanke.

  • continue: "JavaKid8x11.pdf" omenja continue kot ključno besedo za preskok na naslednjo iteracijo zanke.

4. Matematika in naključna števila:

  • Matematična knjižnica (Math class): "Java Full Course for free ☕" predstavlja Math razred z velikim M in demonstrira uporabo nekaterih njegovih metod:

  • Math.max(x, y): Vrne večje od dveh števil (lahko primerja int, long, float ali double). "this will find the larger of two numbers so in order to use the max method we're going to type math with a capital m dot".

  • Math.sqrt(y): Izračuna kvadratni koren števila. "we also have the square root function that is sqrt square root of y".

  • Math.round(x): Zaokroži število na najbližje celo število. "let's round x so x rounded is 3.0".

  • Math.ceil(x): Vedno zaokroži število navzgor. "seal like ceiling this will always round up so 3.4 or 3.14 always rounded up is four".

  • Math.floor(x): Vedno zaokroži število navzdol. "floor will always round down so 3.14".

  • Primer izračuna hipotenuze pravokotnega trikotnika z uporabo Math.sqrt() in kvadriranja. "z equals math dot square root x times x plus y times y".

  • Naključna števila (Random class): "Java Full Course for free ☕" uvaja Random razred za generiranje psevdo-naključnih števil. Ustvari se instanca razreda z new Random(), nato pa se lahko kličejo metode za generiranje različnih tipov naključnih števil (npr. nextInt() za celo število). "random random equals new random that's kind of random then a set of parenthesis then a semicolon we now have access to this random instance to generate some random values for us but there's a disclaimer here these are not true random numbers but something called pseudorandom numbers". "learnjavatheeasyway.pdf" prav tako uporablja Random razred za generiranje naključnih položajev in velikosti mehurčkov. "int x = rand.nextInt(600); int y = rand.nextInt(400); int size = rand.nextInt(50);".

5. Vnos in izpis:

  • System.out.println(): Vsi viri implicitno ali eksplicitno uporabljajo System.out.println() za izpisovanje informacij na konzolo. "JavaKid8x11.pdf" daje primere tiskanja besedila, vrednosti spremenljivk in rezultatov izračunov. "System.out.println("My score is " + myScore);". "Java Full Course for free ☕" prav tako uporablja to za prikazovanje vrednosti spremenljivk.

  • Scanner class: "Java Full Course for free ☕" omenja odpiranje interneta in uporabo iskalnika, vendar ne govori o vnosu s strani uporabnika. "JavaKid8x11.pdf" na kratko omenja, da se bo v prihodnjih poglavjih videlo, kako vnašati podatke. "learnjavatheeasyway.pdf" podrobneje obravnava vnos s tipkovnice z uporabo Scanner razreda. Primer v igri "Hi-Lo Guessing Game" prikazuje ustvarjanje instance Scanner, pozivanje uporabnika za vnos z nextLine() in pretvorbo vnosa v celo število z Integer.parseInt().

6. Objektno usmerjeno programiranje (OOP):

  • Razredi in objekti: "JavaKid8x11.pdf" uvaja koncept razredov in objektov s preprostim primerom razreda Fish z atributom currentDepth in metodama dive() in sleep(). Ustvarjanje objekta myFish iz razreda Fish je prikazano z Fish myFish = new Fish();. "until the instance of the object Fish exists in memory, that’s why they are also called instance variables."

  • Metode: "JavaKid8x11.pdf" definira metode kot bloke kode znotraj razreda, ki izvajajo določena dejanja. Primeri so dive() in sleep() v razredu Fish. Omenja tudi metode znotraj razreda Car (npr. brake(), checkForAntiLockBrakes()). "If a variable has to be reused by several method calls, or it has to be visible from more than one method in a class, you should declare such variable outside of any method."

  • Encapsulation (enkapsulacija): "JavaKid8x11.pdf" na kratko omenja enkapsulacijo kot zmožnost skrivanja in zaščite elementov razreda (atributov in metod), ki ne bi smeli biti vidni od zunaj. Primer z private spremenljivko brakesCondition in private metodami v razredu Car to ponazarja. "One of the main features of object-oriented languages is called encapsulation, which is an ability to hide and protect elements of a class."

  • Dediovanje (extends): "JavaKid8x11.pdf" omenja ključno besedo extends v kontekstu ustvarjanja podrazredov (subclasses), na primer pri ustvarjanju izjeme TooManyBikesException, ki razširja razred Exception. "Create a new subclass of Exception called TooManyBikesException, and if someone tries to th".

  • Konstruktorji: "JavaKid8x11.pdf" prikazuje konstruktor za razred Fish (public Fish(int startingPosition){ currentDepth=startingPosition; }) in konstruktor za izjemo TooManyBikesException. "Constructor TooManyBikesException (){ // Just call the constructor of the superclass // and pass to it the error message to display super ); }". "learnjavatheeasyway.pdf" prav tako omenja konstruktorje (npr. za razred Bubble).

  • Dosegljivost (access modifiers): "JavaKid8x11.pdf" predstavlja ključne besede za nadzor dosegljivosti:

  • private: Element je viden samo znotraj razreda. "This private variable can be used inside // this class only". "This private method can be called inside // this class only".

  • public: Element je viden povsod. "A public method brake() calls private methods // to decide which brakes to use".

  • protected: Element je viden znotraj razreda, njegovih podrazredov in drugih razredov znotraj istega paketa, ni pa viden neodvisnim razredom v drugih paketih. "here is one more Java keyword protected that controls access level. If you use this keyword in a method signature, this method will be visible inside the class, from its subclasses, and from other classes located in the same package. But it won’t be available for independent classes located in other packages."

7. Grafični uporabni vmesniki (GUI):

  • "JavaKid8x11.pdf" omenja AWT in Swing kot dve glavni skupini razredov za ustvarjanje oken v Javi. Swing komponente se običajno začnejo s črko J (npr. JButton). "ava comes with the whole bunch of classes that you’ll be using to two main groups f eating windows in Java: AWT library was available back on, another n ced. It also r window controls. The a omponents start with the letter J, for example B". Omenja tudi upravitelje postavitve (Layout Manager) za organizacijo komponent v oknu (npr. GridLayout, GridBagLayout). "layout manager layout manager layout Manager".

  • "learnjavatheeasyway.pdf" se osredotoča na ustvarjanje GUI aplikacij z Eclipse WindowBuilderjem in Android Studio. Prikazuje ustvarjanje preprostih GUI-jev z gumbi (JButton), besedilnimi polji (JTextField, EditText) in oznakami (JLabel). Obravnava postavljanje lastnosti GUI komponent (npr. besedilo, velikost, položaj).

  • Odzivanje na dogodke (Event Handling): "JavaKid8x11.pdf" uvaja koncept dogodkov (npr. kliki na gumb, premiki miške) in poslušalcev (listeners), ki "poslušajo" te dogodke. Program mora registrirati komponente z ustreznimi poslušalci. "Your program has to register window components with Java classes called listeners. You should make components listen to only those events they are interested in." Primeri poslušalcev so MouseListener in MouseMotionListener. "learnjavatheeasyway.pdf" prav tako obravnava odzivanje na dogodke, kot so kliki na gumbe in pritiski tipke Enter, v kontekstu ustvarjanja iger in drugih aplikacij.

8. Delo z datotekami in tokovi (Files and Streams):

  • "JavaKid8x11.pdf" opisuje delo z datotekami na disku z uporabo razreda File (ustvarjanje instance, preverjanje obstoja datoteke z exists(), ustvarjanje nove datoteke z createNewFile(), preimenovanje z renameTo(), brisanje z delete()). "If you create a program that reads a file, and then displays its content on the screen, you need to know what type of data is". Omenja tudi tokove (FileInputStream, FileOutputStream, FileReader, FileWriter) za branje in pisanje podatkov v datoteke. Pomembnost zapiranja tokov v bloku finally za preprečitev puščanja virov je poudarjena. "Please note that the code block finally. Never put a try/catch block right after finishing reading at the file."

9. Nizki (Strings):

  • "learnjavatheeasyway.pdf" obravnava delo z nizi (String) v Javi, vključno z pridobivanjem posameznih znakov z charAt(index), določanjem dolžine niza z length(), in spajanjem nizov z operatorjem +=. "The index of each character in the string is shown below the character. The first letter, M, is at index 0, the first e is at index 1, and so on."

10. JShell:

  • "learnjavatheeasyway.pdf" uvaja JShell kot interaktivno orodje za preizkušanje kratkih fragmentov kode Java brez potrebe po ustvarjanju celotnega projekta. Prikazuje uporabo osnovnih ukazov, kot so vnos izrazov, deklaracija spremenljivk, izpisovanje (System.out.println()), /help za prikaz ukazov, /list za izpis vnesene kode, /edit za urejanje, /save za shranjevanje v datoteko in /open za odpiranje datoteke kot vnos. "Getting to Know Java with JShell".

11. Android razvoj:

  • "learnjavatheeasyway.pdf" se dotika razvoja aplikacij za Android z Android Studio. Obravnava ustvarjanje novih projektov, gradnjo uporabniškega vmesnika v grafičnem urejevalniku, povezovanje GUI komponent z Java kodo, dodajanje metod za logiko aplikacije in obravnavanje dogodkov. Primer igre "Hi-Lo Guessing Game" je prenesen na platformo Android.

12. Izjeme (Exceptions):

  • "JavaKid8x11.pdf" uvaja koncept izjem kot načina za obravnavanje napak, ki se lahko pojavijo med izvajanjem programa. Primer ustvarjanja lastne izjeme TooManyBikesException z extends Exception je dan. Omenjena je tudi uporaba try-catch blokov za prestrezanje in obravnavanje izjem (v kontekstu dela z datotekami).

13. Napake in odpravljanje napak (Debugging):

  • "learnjavatheeasyway.pdf" v dodatku obravnava pogoste napake pri programiranju v Javi (npr. tipkarske napake, občutljivost na velike in male črke, težave pri primerjanju, nepravilna uporaba oklepajev) in ponuja nasvete za njihovo odpravljanje z uporabo orodij v Eclipse in Android Studio (npr. samodejno dokončevanje kode, označevanje sintaktičnih napak). "Debugging and Avoiding Common Errors in Java".

Skratka, priloženi viri ponujajo uvoden pregled ključnih konceptov programskega jezika Java, od osnovnih gradnikov, kot so JDK, JRE, JVM, podatkovni tipi in kontrolne strukture, do bolj naprednih tem, kot so objektno usmerjeno programiranje, delo z datotekami, ustvarjanje grafičnih uporabniških vmesnikov in razvoj za platformo Android. Viri so namenjeni tako začetnikom kot tudi tistim, ki želijo poglobiti svoje znanje Jave.

Za podcast kliknite na spodnji gump Play. Za ogled knjig na temo Jave kliknite na priložene .pdf datoteke. Spodaj sledi še povzetek.