Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Programmēšanas valodu popularitāte pasaulē
Kompānija TIOBE Software jau vairākus gadus veic pētījumus par
programmēšanas valodu izmantošanu.
TIOBE analīze balstās uz programmētāju meklēto informāciju vietnēs Google,
Google Blogs, Yahoo!, Wikipedia, MSN un YouTube.
Programmēšanas valodu popularitātes izmaiņas pēdējos gados
2011 2010 valoda izmaiņas
2
Populārākās programmēšanas valodas dažādu firmu skatījumā (2010. gads)
3
4
5
Programmēšanas valoda Java
"Write once, run anywhere"
Java ir firmas Sun Microsystems izstrādāta objektorientēta
programmēšanas valoda. Valoda, kuras sākotnējais nosaukums bija
Oak, tika veidota kā C++ aizstājēja, lai gan tās funkcionalitāte ir
tuvāka Objective C.
6
CC++ Java
Java valodas un galveno pakešu izstrādātāji
Java valod tika radīta 1991. gadā kompānijā Sun Microsystems, kā daļa no Zaļā projekta (Green project). 1. Java programmēšanas valodas "tēvs" James Gosling.2. Hibernate (object-relation mapping) izstrādātājs Gavin King. 3. Spring paketes izstrādātājs Rod Johnson.4. Struts paketes izstrādātājs Craig Mcclanahan.5. JBoss paketes izstrādātājs Marc Fleury. 6. Java Collections Framework izstrādātājs Joshua Bloch.7. Test Driven Development un JUnit izstrādātājs Kent Beck.8. Tomcat un Ant izstrādātājs James Duncan Davidson.
Bija nepieciešami 18 mēneši, lai radītu strādājošu versiju. Atklātībā pirmo reizi tā tika laista 1994. gadā, bet 1995. gadā kļuva plašāk pazīstama pēc tam, kad Netscape paziņoja par nodomiem iekļaut tās atbalstu savā Navigator pārlūkprogrammā.
.
.
Javas tehnoloģiju izstrādes un pētniecības centri
7
Java statistika (2010. gads)
8
1. Lieto 6.5 miljoni programmatūras izstrādātāji.
2. 1.1 biljoni (miljardi) lietojumprogrammu izmanto Java tehnoloģijas.
3. Katru gadu tiek nokopētas 930 miljoni Java Runtime Environment vides.
4. 3 biljoni mobīlo telefonu lieto Javas programmas.
5. 100% Blu-ray atskaņotāji izmantoJavu.
9
Java platforma
Java platforma
10
Lietojuma programma
Interfeiss (Aplication Programming Interfeiss)
Java virtuālā mašīna (Java Virtual Machine)
Operētājsistēma
Tehniskais nodrošinājums (hardware)
Java platformas neatkarība
11
Java – pilnvērtīga platforma
12
Programmēšanas valody Java un Python izmantošanas shēma
13
Tradicionālais programmu kompilēšanas process
Java programmu kompilēšanas process
14
Java Run-Time Environment programmēšanas vide
Java Just In Time (JIT) kompilēšanas process
15
Java programmas kompilācijas un izpildes process
16
Java pirmkods (source code)
Java baitkods (bytecode) Operētājsistēma
Tehniskais nodrošinājums
(hardware)
Tīkla nodrošinājums vai failu vadības
sistēma
Klases ielādētājs un baitkoda pārbaudītājs
Kompilators javac Java virtuālā
mašīna (JVM)Kompilators
Just in Time (JIIT)
Klašu ielādētājs (class loader)
Nodrošina programmu koda drošu izpildi. Klašu ielādētājs un baitkoda pārbaudītājs noskaidro, vai baitkods ir pareizi izveidots. Tālāk to izpilda vienā no 2 veidiem:
1. Ar interpretatoru jeb JVM, kas baitkodu pārvērš platformatkarīgās instrukcijās rindiņu pa rindiņai.
2. Efektīvāka ir koda ģenerācija "pēc pieprasījuma" (JIT, just-in-time) - t.i. JIT kompilators "atceras", kuri Javas baitkoda gabali jau ir iztulkoti platformas atkarīgās instrukcijās un netulko tos vēlreiz.
3. Trešā iespēja būtu Javas kodu uzreiz kompilēt par platformas atkarīgām instrukcijām - tāpat kā C vai C++. Tas strādātu ātrāk gan par JVM, gan par JIT. Bet šajā gadījumā zustu vairākas Javas platformas priekšrocības, t.sk. koda izpildes lielāka drošība.
Lai gan JIT kompilatoru lietošana var paātrināt koda izpildi līdz pat 10 reizēm, bieži lieto interpretāciju ar JVM, jo programmas gan tiek pildītas lēni, bet JVM parasti ir mazākas prasības pret dzelžiem un tas ātrāk ielādējas. Sun Microsystems piedāvā populāru kombinētu risinājumu HotSpot, kam ir gan JVM, gan JIT iespējas.
17
Baitkoda pārbaudītāja (bytcode verifier) funkcijas
1. Vai CLASS failu kods atbilst JVM specifikācijai.
2. Vai kods nepārkāpj Javas izejas kodā noteiktos ierobežojumus (piekļuves pārkāpumi: piemēram, mēģinājumi no ārpuses izsaukt funkciju, kas deklarēta kā "private" - var būt bīstami, it īpaši ja ļaunprātīgs kods neparedzētā veidā izsauc metodes citu autoru programmētām klasēm).
3. Vai kods pareizi izmanto izteiksmju operandu steku (t.i. nenotiek steka pārpildīšanās vai iztukšošanās).
4. Vai metožu izsaukumiem nododamo aktuālo parametru tipi ir pareizi.
5. Nenotiek neatļauti datu pārveidojumi (veselo skaitļu tipi uz referenču tipiem, un tml.).
18
Javas Virtuālā Mašīna (JVM)
1 "Aparatūras" specifikācija CLASS failu izpildei. To emulē ar programmu nodrošinājumu. Nav vajadzīgs, lai mašīnas "dzelži" saprastu Javas CLASS failus.
2. JVM lasa kompilēto baitkodu (.CLASS failus), kas ir platformneatkarīgs.
3. JVM var būt Javas izstrādes vides (piem. JDK1.4) sastāvdaļa, Javas izpildes vides (JRE) sastāvdaļa, vai pārlūkprogrammas spraudnis jeb plugins.
4. No tipu pārbaudēm lielākā daļa veikta kompilācijas laikā (stipri tipizēta valoda - mainīgo tipi ir zināmi kompilācijas laikā; ir tomēr iespējams polimorfisms).
5. Jebkurai Sun Microsystems apstiprinātai JVM jāvar darbināt jebkurš standartam atbilstošs .class fails.
19
Just in time kompilators
1. Ielādē, pārbauda, izpilda baitkodu.
2. Rekursīvi sekojot koda atkarībām, ielādē visas klases, kuras nepieciešamas programmas izpildei.
3. Klases, kuras nāk no vietējās failu sistēmas (local file system) glabājas atsevišķos vārda apgabalos (namespace).
4. Nepieļauj viltošanas (spoofing) uzbrukumus. Viltošanas uzbrukumi ir mēģinājums iesūtīt ļaunprātīgi modificētus datus tādā vietā, kurai saņēmējs uzticas un šādi izprovocēt saņēmēju veikt uzbrucējam vēlamās darbības. Javas apletu gadījumā - no Interneta atnākušais kods varētu vēlēties nonākt "uzticamā" JVM apgabalā un izpildīties kā droša programma ("Trojas zirgs" utml.). Javas platforma šādus uzbrukumus novērš. (Ir arī "spoofing"-am līdzīgs termins - sniffing, t.i. tīkla saziņas noklausīšanās, to nemodificējot.)
20
Java programmēšanas rīku komplekts Java Developer
Kit
Lai varētu kompilēt, atkļūdot (debug) un izpildīt Java valodas programmas ,
nepieciešama izpildes vide Java Developer Kit (JDK)1.
Instalējamais fails:
Istalēšanas gaitā izveidotie katalogi:
1 http://www.webkursi.lv/java-eim/de/index_java.html
21
Java programmēšanas rīku komplekta Java Developer
Kit svarīgākās programmas
Kompilēšana - rīks javac.exe
CLASS koda interpretēšana – rīks java.exe
Dokumentācijas ģenerēšana - rīks javadoc.exe
Klašu failu arhivēšana - rīks jar.exe
Lietojumu darbināšanas vide Java Runtime Environment - patstāvīgām
programmām (standalone program), apletiem, servletiem, utml.
Kompilācija: javac Klase_a.java
Izpilde: java Klase_a
Visu klašu pārkompilācija: javac *.java
22
Kompilācijas programmas javac.exe parametri
23
Izpildes programmas java.exe parametri
24
Rīku komplekta Java Developer Kit instalēšana
1. Java Developer Kit (JDK) faili Windows operētājsistēmas vidē parasti ir
katalogā \Program Files\Java\jdk1.6.0_05 .
2. Javas virtuālā mašīna ir izpildāma programma java.exe katalogā jdk1.6.0_05\
bin.
3. Javas kompilators ir cita izpildāma programma javac.exe šajā kataligā.
JDK versijas pārbaude:
25
Rīku komplekta Java Developer Kit instalēšana (turpinājums)
Lai Java lietojumu programmas varētu glabāt un izmantot no jebkura kataloga:
1) jādefinē sistēmas vides mainīgais JAVA_HOME ar kura palīdzību tiek
norādīta JDK programmu atrašanās vieta (piemēram, I:\Program Files\Java\
jdk1.6.0_05);
2) jāpievieno PATH mainīgajam katalogu %JAVA_HOME%\bin (PATH
direktorijas uz Windows datoriem atdala ar semikoliem(;)).
Šajā gadījumā, kompilējot un darbinot Javas programmas nebūs jānorāda pilns
ceļš uz javac un java.
Start Control Panel Performance and Maintenance System (Environment variables)
26
Java informācija MS Windows reģistrā (apskate un apstrāde ar Registry Editor)
27
http://java.sun.com/docs/books/tutorial/http://java.sun.com/javase/reference/index.jsp
Trails Covering the BasicsGetting Started — An introduction to Java technology and lessons on installing Java development software and using it to create a simple program. Learning the Java Language — Lessons describing the essential concepts and features of the Java Programming Language. Essential Java Classes — Lessons on exceptions, basic input/output, concurrency, regular expressions, and the platform environment. Collections — Lessons on using and extending the Java Collections Framework. Swing — An introduction to the Swing GUI toolkit, with an overview of features and a visual catalog of components. See below for a more comprehensive tutorial on Swing. Deployment — How to package applications and applets using JAR files, and deploy them using Java Web Start and Java Plug-in. Preparation for Java Programming Language Certification — List of available training and tutorial resources. Specialized Trails and LessonsCustom Networking — An introduction to the Java platform's powerful networking features. The Extension Mechanism — How to make custom APIs available to all applications running on the Java platform. Full-Screen Exclusive Mode API — How to write applications that more fully utilize the user's graphics hardware. Generics — An enhancement to the type system that supports operations on objects of various types while providing compile-time type safety. Note that this lesson is for advanced users. The Java Language trail contains a Generics lesson that is suitable for beginners. Internationalization — An introduction to designing software so that it can be easily be adapted (localized) to various languages and regions. JavaBeans — The Java platform's component technology. JDBC Database Access — Introduces an API for connectivity between the Java applications and a wide range of databases and a data sources. JMX— Java Management Extensions provides a standard way of managing resources such as applications, devices, and services. JNDI— Java Naming and Directory Interface enables accessing the Naming and Directory Service such as DNS and LDAP. RMI — The Remote Method Invocation API allows an object to invoke methods of an object running on another Java Virtual Machine. Reflection — An API that represents ("reflects") the classes, interfaces, and objects in the current Java Virtual Machine. Security — Java platform features that help protect applications from malicious software. Sound — An API for playing sound data from applications. 2D Graphics — How to display and print 2D graphics in applications. Sockets Direct Protocol — How to enable the Sockets Direct Protocol to take advantage of InfiniBand.
28
Java programmas kompilācija un izpilde ar Java Developer Kit (JDK) programmām
Fails Sveiki.javapublic class Sveiki { public static void main (String[ ] args) { System.out.println ("Sveiki. Saksim apgut valodu Java."); } }
1. kompilācija: javac.exe Sveiki.java
2. izpilde: java.exe Sceiki.class
29
Sveiki.javaKlases programma Java valodā
Kompilators javac.exe
Sveiki.classKompilētā programma (baitkods)
Izpildes veicējs java.exe
Programmas veidošana un izpilde izmantojot programmēšanas valodu Java
1. Fails Sveiki.java ar programmu (klases Sveiki definējumu):
public class Sveiki{public static void main(String[] args){System.out.println("Sveiki. Saksim apgut valodu Java.");} }
2. Komandrindas režīma izsaukšana (Start Run cmd).
3. Pārbaude, ka Java Developer Kit instalācija veikta (java –version).
4. Java klases kompilācija (javac Sveiki.java), tiek iegīts fails Sveiki.class.
5. Klases Sveiki metodes main() izpilde (java Sveiki).
30
Java klašu struktūra dati un metodes. Struktūrvienību sadarbība
31
KlaseAmain() metodeSetX1() metodex1 datu vienība GetX1() metodeSetX2() metodex2 datu vienība GetX2() metodeMetodeC() MetodeD()
KlaseBMetodeE()SetX3() metodex3 datu vienība GetX3() metodeSetX4() metodex4 datu vienība GetX4() metodeMetodeF()
JAVA klases definēšanas pamatnoteikumi
class KlasesNosaukums {
datu_lauks_1datu_lauks_2. . .konstruktors_1konstruktors_2. . .metode_1metode_2. . . }
1. Tiek ņemts vērā vai izmantots lielais vai mazais burts (main vai Main).
2. public (access modifier) – citas klases var izmantot vai citas metodes var
izmantot.
3. Klases nosaukums sākas ar lielo burtu (Klase_A).
4. Faila nosaukumam ar klases definējumu un klases nosaukumam ir jābūt
vienādiem.
1. Faila paplašinājums ir .java.
2. Kompilators izveido failu ar klases nosaukumu un paplašinājumu .java.
3. Klases izpilde sākas ar metodi main.
4. Tiek izmantots pieraksts objekts.metode(parametri).
32
Klases definēšanas un pārbaudes piemērs
public class Darbinieks {// klases atribūti private String UZVARDS; private double ALGA; private int DZIM_GADS; // konstruktora funkcija public Darbinieks (String uzv, double alg, int gads) { UZVARDS = uzv; ALGA = alg; DZIM_GADS = gads; } // metodes public String getUzvards() { return UZVARDS; } public double getAlga() { return ALGA; } public int getDzim_gads() { return DZIM_GADS; } public void Algas_maina (double procents) { double pieaugums = ALGA * procents /100; ALGA += pieaugums; } }
public class DarbinieksTests { public static void main (String [ ] args) { Darbinieks [ ] darbinieki = new Darbinieks [3]; darbinieki [0] = new Darbinieks ("Koks", 400.50, 1980); darbinieki [1] = new Darbinieks ("Celms", 500.50, 1985); darbinieki [2] = new Darbinieks ("Sakne", 550.50, 1970);for (Darbinieks d : darbinieki) System.out.println("uzvards= "+ d.getUzvards() + ", alga= " + d.getAlga() ); } }
uzvards= Koks, alga= 400.5uzvards= Celms, alga= 500.5uzvards= Sakne, alga= 550.5Process exited with exit code 0.
33
Klašu Cilveks un CilveksTests definējums un izpildē iegūtais rezultāts
public class Cilveks {// Klases datiprivate String vards;private String uzvards;//Konstruktora funkcijapublic Cilveks(String a, String b) {vards = a; uzvards = b;}//Metodespublic String getVards() {return vards;}public String getUzvards() {return uzvards;}public void setVards(String x) {vards = x;}public void setUzvards(String y) {uzvards = y;} }
public class CilveksTests{public static void main(String[] args){ // Masiva aizpildisanaCilveks[] masivs = new Cilveks[2];masivs[0] = new Cilveks("Juris", "Koks");masivs[1] = new Cilveks("Rasma", "Zars");// Datu izvadefor (Cilveks c : masivs)
System.out.println(c.getVards()+c.getUzvards());//Objekta izveidosanaCilveks a;a = new Cilveks("A", "B");System.out.println(a.getVards()+a.getUzvards());//Metozu izmantosana datu ievadeia.setVards("Zane");a.setUzvards("Liepa");System.out.println(a.getVards()+a.getUzvards());Cilveks b = new Cilveks("n", "n");
b.setVards("Ligita");b.setUzvards("Caune");System.out.println(b.getVards()+b.getUzvards());}}
34
Java Programmas veidošana izmantojot redaktoru TextPad
Klases definējuma ievade
Klases kompilācijas un programmas izpildes veikšana
35
Java programmas izpilde ar IDE rīku NetBeans
36
Jaunumi!
1. Projektu Hibernate un Seam dibinātājs Gavin King, konferences QCon
laikā atklājis dažas lietas saistībā ar projektu Ceylon, kura ietvaros tiek
veidota jauna programmēšanas valoda un programmēšanas rīku komplekts
(SDK), kas pretendē uz Java aizvietotāja statusu.
2. Projekts jau divus gadus tiek attīstīts kompānijas RedHat dzīlēs dziļā
slepenībā.
37