520 likes | 691 Views
Modernās Programmēšanas Tehnoloģijas (Advanced Programming Technologies ). Edgars Celms, Mārtiņš Opmanis (askola@mii.lu.lv). Latvijas Universitātes Matemātikas un informātikas institūts 200 7, Rīga, Latvija. Ievads valodā JAVA I. “ Java™ How to Program, Sixth Edition ”
E N D
Modernās Programmēšanas Tehnoloģijas(Advanced Programming Technologies) Edgars Celms, Mārtiņš Opmanis (askola@mii.lu.lv) Latvijas Universitātes Matemātikas un informātikas institūts 2007,Rīga, Latvija
Ievads valodā JAVA I • “Java™ How to Program, Sixth Edition” • Chapter 1. Introduction to Computers, the Internet and the World Wide Web. • Chapter 2. Introduction to Java Applications.
Valoda JAVA • Java – universāla programmēšanas valoda. • valoda, kurāvar uzrakstīt dažāda “līmeņa” lietojumus • Java 2 Platform, Standard Edition (J2SE) • Java 2 Platform, Enterprise Edition (J2EE) • large-scale, distributed networking applications and Web-based applications • Java 2 Platform, Micro Edition (J2ME) • developing applications for small, memory-constrained devices, such as cell phones, pagers and PDAs • Raksti vienreiz, izpildi visur (WORA– Write Once, Run Anywhere). • Valoda Java tiek pastāvīgi papildināta ar jaunām iespējām.
Valodas JAVA vēsture I • 1991 – Sun Microsystems (James Gosling) • CodenameGreen– first time called “Oak” • Originally developed for intelligent consumer-electronic products such as – set top boxes, Microwaves, TV, etc. • 1993 – WWW exploded in popularity • Widely used with dynamic content (interactivity & animations) • Current – used for • Develop large scale enterprise applications • Enhance WWW server functionality • Provide applications for consumer devices • Cellular phone, Palm, Personal Game, etc.
Valodas JAVA vēsture II(www.wikipedia.com) • JDK 1.0 (1996) – Initial release. 212 classes, 8 packages. • JDK 1.1 (1997) – Major additions, most notably the extensive retooling of the event model, as well as the introduction of inner classes. 504 classes, 23 packages. • J2SE 1.2 (December 4, 1998) – Codename Playground. Major changes were made to the API (reflection was introduced, the Swing graphical API was integrated into the core classes, Collections API, etc) and to Sun's JVM (which was equipped with a JIT compiler). These had little impact on the language itself, however: the only change to the Java language was the addition of the keyword strictfp. This and subsequent releases were rebranded "Java 2", but this had no effect on any software version numbers. 1520 classes, 59 packages.
Valodas JAVA vēsture III • J2SE 1.3 (May 8, 2000) – Codename Kestrel. • The most notable changes were: HotSpot JVM, Remote Method Invocation (RMI) was changed to be based on CORBA, RMI/IIOP, Java Naming and Directory Interface (JNDI), Java Sound, etc • 1842 classes, 76 packages. • J2SE 1.4 (February 13, 2002) – Codename Merlin. As of 2004, the most widely used version. • The most notable changes were: low-level I/O API, regular expressions (modeled after Perl regular expressions), logging, user preferences, XML-based persistence, DOM and SAX for XML parsing, SSL, security and cryptography extensions (JCE, JSSE, JAAS) were integrated into J2SE, image reading/writing, drag-and-drop for Swing, assert keyword, etc • 2991 classes, 135 packages.
Valodas JAVA vēsture IV • J2SE 5.0 (September 29, 2004) – Codename Tiger. (Originally numbered 1.5, which is still used as the internal version number.) Added a number of significant new language features: • Generics – Provides compile-time type safety for collections and eliminates the need for most typecasts. • Autoboxing/unboxing – Automatic conversions between primitive types (such as int) and wrapper types (such as Integer). • Metadata – also called Annotations, allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities • Enumerations – the enum keyword creates a typesafe, ordered list of values (such as Day.monday, Day.tuesday, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern). • Enhanced for loop – the for loop syntax is extended with special syntax for iterating over each member of an array or Collection. • >3000 classes
Valodas JAVA vēsture V • Java SE 6(December11, 2006) – Codename Mustang. As of this version, Sun replaced the name "J2SE" with Java SE and dropped the ".0" from the version number. • Web Services support in Java SE 6 (before it was partially available only in Java EE)
Valodas JAVA vēsture VII • Java SE 6 (December 11, 2006) • Scripting facilities in SE 6 • Developer APIs to allow mixing of scripting code with your Java application • A collection of scripting engines at scripting.dev.java.net that you can use with Java SE 6 • The Rhino JavaScript engine in Java SE 6 • Database Developmentfacilities • More Desktop APIs • Monitoring and Management facilities
Valodas JAVA vēsture VIII • Java SE 6 (December 11, 2006) • Compiler Access • Pluggable Annotations • … • Java SE 7 – Codename Dolphin. Project started up in August 2006, with release estimated in 2008.
J2SE 5.0 platforma • Version 1.5.0 or 5.0 • Both version numbers "1.5.0" and "5.0" are used to identify this release of the Java 2 Platform Standard Edition. Version "5.0" is the product version, while "1.5.0" is the developer version. The number "5.0" is used to better reflect the level of maturity, stability, scalability and security of the J2SE. • The number "5.0" was arrived at by dropping the leading "1." from "1.5.0". Where you might have expected to see 1.5.0, it is now 5.0 (and where it was 1.5, it is now 5).
Java™ Platform, Standard Edition 6 • Java™ SE 6, Platform Name and Version Numbers • At this release, the platform name has changed from J2SE™ to Java™ SE. The official name is Java™ Platform, Standard Edition 6. • Both version numbers (1.6.0 and 6) are used to identify this release of the Java Platform. Version 6 is the product version, while 1.6.0 is the developer version. The number 6 is used to reflect the evolving level of maturity, stability, scalability and security of Java SE. • Version 6 Used in Platform and Product Names • Due to significant popularity within the Java developer community, "JDK" continues to be the acronym for the development kit, as does "JRE" for the runtime environment. Notice that "JDK" stands for "Java SE Development Kit" (to distinguish it from the Java EE Development Kit known as SDK). The name "Java Development Kit" is no longer used, and has not been offically used since 1.1, prior to the advent of Java EE and Java ME.
Java™ Platform, Standard Edition 6 JRE Java SE API JDK
Javas klašu bibliotēka • Tiek saukta par Java APIs (Application Programming Interfaces) • Liela klašu kolekcija • Divas būtiskas lietas, kuras ir jāapgūst mācoties valodu Java • Valoda Java • Javas klašu bibliotēkas lietošana(http://java.sun.com/javase/6/docs/api/) • Vienu un to pašu var noprogrammēt daudzos dažādos veidos • padoms programmētājiem • rakstiet pēc iespējas vienkāršākas programmas (“KIS – keep it simple”) • izmantojiet standarta risinājumus
C++ un daudzu citu kompilējamu valodu izpildes veids Your Program If x = 5 then… Source Code Compiler For Mac Compiler For Windows PC 0011 1111 1011 0011 Mac PC with Windows
Javas virtuālā mašīna (Java Virtual Machine) Your Program If x = 5 then… Source Code Java Compiler ByteCode Windows JVM Mac JVM 1011 0011 0011 1111 PC with Windows Mac
Tipiska Javas izstrādes vide Edit Compile Creates bytecodes & Stores a file - Extension .class Edit & Store a file - Extension . java Verify Load Verify bytecodes & Validate for Java’s security violations • Class loader • put . class file • in memory Translate bytecodes into a machine language Execute the program - display or store data values
Tipiska Javas izstrādes vide • Bilde no – “Java™ How to Program, Sixth Edition”. H. M. Deitel - Deitel & Associates, Inc., P. J. Deitel - Deitel & Associates, Inc.
Java SE 6 instalēšana • Java SE 6 instalēšana • Java SE 6– http://java.sun.com/javase/downloads/index.jsp • Vajag lejuplādēt to kas ir atrodams pie (03.09.2007): • Turpat var lejuplādēt arī “JDK 6 Update 2 with NetBeans 5.5.1”, tad jums papildus būs pieejama arī IDE programmēšanai Javā (NetBeans 5.5.1) • Java SE 6 instalācijas pamācība – http://java.sun.com/javase/6/webnotes/install/index.html • Skatīt arī “Installing the J2SE Development Kit (JDK)” no “Java™ How to Program, Sixth Edition” • Paskatīties kāda Javas versija atrodas uz jūsu datora • To var izdarīt no komandrindas • java -version
Programmēšanas valoda Java • Ļooooti daudz informācija par Javu ir atrodama tīmeklī • Java SE 6 –http://java.sun.com/javase/downloads/index.jsp • Java SE 6 – http://java.sun.com/javase/6/webnotes/install/index.html • Dažādi mācību līdzekļi (tutorials) – http://java.sun.com/docs/books/tutorial/index.html • Tutorialsvar arī lejuplādēt – http://java.sun.com/docs/books/tutorial/information/download.html • Javas oficiālā dokumentācija – http://java.sun.com/javase/6/docs/ • Dokumentāciju var arī lejuplādēt (apt. 52Mb) – http://java.sun.com/javase/downloads/index.jsp • Java SE 6 iekļauto rīku apraksts – http://java.sun.com/javase/6/docs/technotes/tools/index.html • Javas klašu bibliotēkas lietošana – http://java.sun.com/javase/6/docs/api/index.html • Ir pieejami arī Java SE 6 izejas teksti • ... • Kursam nepieciešamā literatūra ir atrodama uz studentu ftp servera “OOP” mapē.
Pirmā programma valodā JAVA • “Java™ How to Program, Sixth Edition” • Chapter 1. Introduction to Computers, the Internet and the World Wide Web. • Chapter 2. Introduction to Java Applications.
Pirmā programma valodā JAVA • Javaslietojumprogramma (application) • Datorprogramma, kura tiek izpildīta tad, kad jūs lietojat java komandu lai startētu javas virtuālo mašīnu (Java Virtual Machine (JVM)) • Piemēra programma • Attēlo tekstu • Ilustrē dažas svarīgas Javas valodas īpašības
Valodas JAVA sintakses elementi • Komentāri (Comments) • Single-line comments: // … • Multiple-line comments: /* … */ • Javadoc comments: /** … */ • Programmas bloki (Program Blocks) • { … statement; statement; … } • Atslēgvārdi (Keywords: reserved words for the Java language) • All lowercase letters • e.g., class, public, static, void, int, new, … [Appendix C]
Valodas JAVA sintakses elementi • Identifikatori (Identifiers: names of classes, methods, variables, etc.) • Sastāv no burtiem, cipariem, pasvītrojuma( _ ) un dolāra zīmes ($) • Nevar sākties ar ciparu • Nesatur tukšumus • Lielie un mazie burti ir atšķirīgi (Case sensitive) • Piemēram,ATM, atmNumber, atm_number, _val1, $val2
Valodas JAVA komentāru piemēri • Single line and end–of–line comments • //Test printing program • public class Welcome1//class declaration • Multiple-line comment • /* This class is a fundamental programming class with Java for beginners */ • Javadoc comment • /** This comment will be used by javadoc utility program to document the program in HTML format */ Vairāk par javadoc skat.: http://java.sun.com.j2se/javadoc
Laba programmēšanas prakse I(Good Programming Practice) • Begin with a comment including the purpose of the program, the author and the date and time the program was last modified. • Program change and version control • Use blank lines and space characters to enhance program readability. • Also ignored by the compiler • Begin a class name’s identifier with a capital letter and start each subsequent word in the identifier with a capital letter. • Valid Identifiers – start with letter, $ , or _ - Welcome1, $value, _accountNo • Non-Valid Identifier – start with numbers – e.g. 7button, 0121class • Java is case sensitive • edgarsCelms and EdgarsCelms are different identifiers • Use proper upper and lower case letters
Laba programmēšanas prakse II(Good Programming Practice) • Whenever opening a left brace, immediately put the matching right brace • Prevent an error by missing braces • Indent the entire body of each class declaration one level of indentation b/w the left braces • Set a convention for the indent size in the editor you are using • Tab key for indentation
Populārākās iesācēju kļūdas I (Common Programming Error) • Class name and File name are mismatch • In terms of spelling and capitalization • Not to end a file name with .java extension for a file containing a class declaration • A syntax error if braces does not occur in matching pairs • Left brace { and match with right brace } • Omitting the semicolon at the end of a statement
main metode public static void main (String args[]) • Starta (ieejas) punkts visām Javas lietojumprogrammām • Iekavas aiz main norāda, ka tā ir metode • Aplikācijai ir jābūt tieši vienai main metodei • static metode – veic darbības, kuras nav atkarīgas no objekta (klases instances) stāvokļa (tiek sauktas arī par klases metodēm) • void – beidzot darbu neatgriež nekādus datus • String args[]– argumentu saraksts
Programmas instrukcijas System.out.println (“Welcome to Java Programming !”); • Programmas instrukcijas liek datoram kaut ko darīt • System.out– sistēmas standarta izvades objekts • Attēlo simbolu virkni (sauktu arī par string, message, string literal) komandu logā (prompt in Windows, shell or terminal window in Unix, Linux, MacOS). • System.out.println • Attēlo doto argumentu komandu logā un novieto kursoru nākamās rindas sākumā • Semikols (;) • Katra programmas instrukcija beidzas ar semikolu • Tikai ; (bez programmas instrukcijas) -> nekāda darbība • Semikola neesamība instrukcijas beigās -> sintakses kļūda
Kompilēšana un izpilde • Saglabājiet programmas tekstu datnē ar papalšinājumu .java • Nomainiet aktīvo mapi uz to kur datne tika saglabāta • C:> cd C:\APT\examples • Kompilēšana • C:\APT\examples>javac Welcome1.java • Kompilācijas kļūdas ir jāizlabo pirms izpildes • Izpilde • C:\APT\examples>java Welcome1 • Launches JVM • JVM loads .class file for class Welcome1 • .class extension omitted from command • JVM calls method main
Daži komentāri par iespējamām kļūdām I • Compiler errors such as: • “bad command or filename” • “javac: command not found” • “'javac' is not recognized as an internal or external command, operable program or batch file” The system’s PATH environment variable may not set properly. Please review the J2SE Development Kit installation instructions at java.sun.com/j2se/5.0/install.html. After correcting the PATH, you may need to reboot your computer for these settings to take effect.
Daži komentāri par iespējamām kļūdām II • The compiler error message: • “Public class ClassName must be defined in a file called ClassName.java” File name does not exactly match the name of the public class in the file or the class name was incorrect when compiling the class. • When attempting to run a Java program, if you receive a message such as: • “Exception in thread "main" java.lang.NoClassDefFoundError: Welcome1” Your CLASSPATH environment variable has not been set properly. On some systems, you may need to reboot your computer after configuring the CLASSPATH.
print vs. println • print method does not move the cursor at the beginning of the next line after performing the task • Not economical if you use multiple statements to do the same task, which can be done with a single statement
Java Escape Sequences Escape Character: - a special meaning in a sequence of characters Welcome to Java Programming Display multiple lines with a single statement
Formatizēta datu izvade ar printf Welcome to Java Programming • System.out.printf • Formatizēta datu izvade (ļoti populāra lieta C valodā!!!) • Tika ieviesta tikai J2SE 5.0 • Formatēšanas specifikators – sākas ar %, kam seko simbols (nosaka izvadāmo tipu) • %s – pasakam, ka gribam izvadīt simbolu virkni • Izvadāmie argumenti tiek atdalīti ar komatiem
“Otrā” Javas lietojumprogramma • Javas lietojumprogramma divu skaitļu ievadīšanai un to summas attēlošanai • Scanner klases lietojums datu ievadei • printf lietojums, lai attēlotu divu skaitļu summu • pakotņu (package) lietojums valodā Java
Divu veselu skaitļu saskaitīšana System.out class - A part of package java.lang (java.lang is the only package in the Java API that does not require an import declaration) Standard Input (Command Window) Standard Input Declare variables • Range of int • -2,147,483,648 to +2,147,483,647
Populārākās iesācēju kļūdas II(Common Programming Error) • All import declarations must appear before the first class declaration in the file. • Placing an import declaration inside a class declaration’s body or after a class declaration is a syntax error. • Forgetting to include an import declaration for a class used in your program typically results in a compilation error containing a message such as “cannot resolve symbol.” • Check that you provided the proper import declarations.
Laba programmēšanas prakse III(Good Programming Practice) • Declare each variable on a separate line with descriptive comment • Choosing meaningful variable names helps a program to be self-documenting • Variable-name identifiers begin with a lowercase letter, and every word in the name after the first word begins with a capital letter – e.g.: firstName
Aritmētiskie operatori valodā JAVA • Integer division truncates remainder • 7 / 5 evaluates to 1 • Remainder operator % returns the remainder • 7 % 5 evaluates to 2
Operatoru izpildes secība valodā JAVA • Some arithmetic operators act before others (i.e., multiplication before addition) • Use parenthesis for complex arithmetic expressions • Example: Find the average of three variables a, b and c • Do not use: a + b + c / 3 • Use: ( a + b + c ) / 3
Vienādības (equality) un relāciju (relational) operatori valodā JAVA • Nosacījums • Izteikmse kuras rezultāts ir vai nu patiess (true), vai nu aplams (false) • if instrukcija (statement) • Piemērā būs vienkāršākais if variants (par pārējo vēlāk ) • Ja nosacījums if instrukcijā ir true, tad if instrukcijas ķermenis (body) tiek izpildīts • Nosacījumus if instrukcijās var veidot lietojot vienādības, relāciju un loģiskos (conditional) (par tiem arī vēlāk ) operatorus
Populārākās iesācēju kļūdas III(Common Programming Error) • Forgetting parenthesis in an if-statement • Confusion b/w equality operator (==) and assignment operator (=) • Contain spaces b/w their symbols • = =, ! = , > = , etc. • Reversing the operators • =!, =>, =< • Put a semicolon right after the right parenthesis after an if statement • if (int1 == int2) ; • No action if the statement is true – logical error
Laba programmēšanas prakse IV(Good Programming Practice) • A lengthy statement can be spread over several lines. If a single statement must be split across lines, choose breaking points that make sense, such as after a comma in a comma-separated list, or after an operator in a lengthy expression. If a statement is split across two or more lines, indent all subsequent lines until the end of the statement. • Refer to the operator precedence chart (see the complete chart in Appendix A) when writing expressions containing many operators.