programmēšanas valoda java - web view1. java programmēšanas valodas tēvs james...
TRANSCRIPT
1
Java valodas izmantošana informācijas sistēmas veidošanai
Datu bāzes sistēma
PL/SQL programma
Lietojums(Java
programma ar SELECT)
JDBC interfeiss
DBVSDati un metadati
Java programma ar SELECT
JDBC interfeiss
2
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.
CC++ Java
3
Javas valodas un tās pamattehnoloģiju izstrādātāji1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created the original design of Java and implemented its original compiler and virtual machine. For this achievement he was elected to the United States National Academy of Engineering. On April 2, 2010, he left Sun Microsystems which had recently been acquired by the Oracle Corporation. Regarding why he left, Gosling wrote on his blog that “Just about anything I could say that would be accurate and honest would do more harm than good.”
2. Hibernate (object-relation mapping) izstrādātājs Gavin King, is the founder of the Hibernate project, a popular object/relational persistence solution for Java, and the creator of Seam, an application framework for Java EE 5. Furthermore, he contributed heavily to the design of EJB 3.0 and JPA.
3. Spring paketes izstrādātājsRod Johnson, is the founder of the Spring Framework, an open source application framework for Java, Creator of Spring, CEO at SpringSource. Furthermore, Rod’s best-selling Expert One-on-One J2EE Design and Development (2002) was one of the most influential books ever published on J2EE.
4. Struts paketes izstrādātājsCraig Mcclanahan, creator of Struts, a popular open source MVC framework for building Java-based web applications, which is arguably that every Java developer know how to code Struts. With the huge success of Struts in early day, it’s widely implemented in every single of the old Java web application project.
4
5. JBoss paketes izstrādātājsMarc Fleury, who founded JBoss in 2001, an open-source Java application server, arguably the de facto standard for deploying Java-based Web applications. Later he sold the JBoss to RedHat, and joined RedHat to continue support on the JBoss development. On 9 February 2007, he decided to leave Red Hat to pursue other personal interests, such as teaching, research in biology, music and his family.
6. Java Collections Framework izstrādātājsJoshua Bloch, led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. In June 2004 he left Sun and became Chief Java Architect at Google. Furthermore, he won the prestigious Jolt Award from Software Development Magazine for his book, “Effective Java”, which is arguably a must read Java’s book.
7. Test Driven Development un JUnit izstrādātājsKent Beck, creator of the Extreme Programming and Test Driven Development software development methodologies. Furthermore, he and Erich Gamma created JUnit, a simple testing framework, which turn into the de facto standard for testing Java-based Web applications. The combine of JUnit and Test Driven Development makes a big changed on the way of coding Java, which causes many Java developers are not willing to follow it.
8. Tomcat un Ant izstrādātājsJames Duncan Davidson, while he was software engineer at Sun Microsystems (1997–2001), created Tomcat Java-based web server, still widely use in most of the Java web projects, and also Ant build tool, which uses XML to describe the build process and its dependencies, which is still the de facto standard for building Java-based Web applications.
5
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.
6
Javas tehnoloģiju izstrādes un pētniecības centri
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)
7
Java programmas kompilācijas un izpildes process
8
Java programmas kompilācija un izpilde ar Java Developer Kit (JDK) programmām
Fails Sveiki.java
public 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 Sveiki.class
Sveiki.javaKlases programma Java valodā
Kompilators javac.exe
Sveiki.classKompilētā programma (baitkods)
Izpildes veicējs
java.exe
9
Java programmēšanas rīku pamat-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
10
Operētājsistēmas vides parametru norāde rīku komplektam Java Developer Kit
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)
11
Java klases veidošana datu bāzē
1. Java klases failu ielāde DB izmantojot loadjava programmu.
2. Java klases izveidošana ar create java … komandu.
Datu bāzeFails ar Java klases
definējumu
CMD videloadjava
programma
Datu bāzeSQL*PLUS programma
SQL> create java ...
12
Java klases izveide datu bāzē izmantojot komandu CREATE JAVA
1. Klases ielāde izmantojot CREATE JAVA SOURCE NAMED komandu:
create or replace JAVA source named "Sveiki" aspublic class Sveiki { public static String Sveiki_Teksts (){ return "Sveiki! Sāksim lietot Javu datu bāzē."; } };
2. Metadatu apskate: select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('22-11-2014', 'DD-MM-YYYY');
OBJECT_NAME OBJECT_TYPE STATUS----------------------------------------------------------------------------Sveiki JAVA CLASS VALIDSveiki JAVA SOURCE VALID
13
3. Izsaucošās PL/SQL funkcijas definēšana:
create or replace function SVEIKI_TEKSTS return varchar2 aslanguage java name 'Sveiki.Sveiki_Teksts () return java.lang.String';
4. Izsaucošās PL/SQL funkcijas aktivēšana izmantojot SELECT vaicājumu:
select SVEIKI_TEKSTS from DUAL;
SVEIKI_TEKSTS-----------------------------------------------Sveiki! Saksim lietot Javu datu bāzē.
14
Izveidotās Java klases nodzēšana ar komandu DROP JAVA
Javaklases nodzēšana:
drop java source "Sveiki";Java dropped.
select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('19-11-2012', 'DD-MM-YYYY');
OBJECT_NAME OBJECT_TYPE STATUS-------------------------------------------------------------------------SVEIKI_TEKSTS FUNCTION VALID
15
Java klases objektos pieeja datiem iespējama tikai izmantojot klases metodes – tā ir datu iekapsulēšana (encapsulation)
Pieejas tipi klases datiem un metodēm:
1) private – nevar izmantot no citām klasēm;
2) public – var izmantot arī no citām klasēm;
3) protected – apakšklašu metodēm ir tieša pieeja superklases datiem.
Java klase
Metode A Metode B
Datu vienības
16
Klases definēšanas piemērs
public class Darbinieks {// klases eksemplāra atribūti private String uzvards; private double alga; private int dzim_gads; // konstruktor-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; } }
17
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 e : darbinieki) System.out.println("uzvards= "+ e.getUzvards() + ", alga= " + e.getAlga() ); } }
18
JDBC interfeisa arhitektūra
JDBC interfeisa arhitektūru veido divi līmeņi:1) JDBC API. Tas ir savienojums: lietojums JDBC dziņu vadītājs (JDBC manager);
2) JDBC Driver API. Tas ir savienojums: JDBC dziņu vadītājs dzinis jeb draiveris. Katram avotam (datu bāzes sistēmai) ir savs draiveris vai draiveri.
JDBC thin driverJava sockets
JDBC OCI driverOCI C library
19
Datu bāzes sistēmas Oracle JDBC draiveri (dziņi)
1. Plānais (thin) draiveris. It is a pure Java driver used on the client-side, without an Oracle client installation. It can be used with both applets and applications.
2. Oracle Call Interface (OCI) draiveris. It is used on the client-side with an Oracle client installation. It can be used only with applications.
3. Servera puses plānais (server-side thin) draiveris. It is functionally similar to the client-side thin driver. However, it is used for code that runs on the database server and needs to access another session either on the same server or on a remote server on any tier.
4. Servera puses iekšējais (server-side internal) draiveris. It is used for code that runs on the database server and accesses the same session. That is, the code runs and accesses data from a single Oracle session.
SQL enginePL/SQL engine
Server-side thin driver
JDBC server-side internal
driver
KPRB C library
Oracle datu bāze
Java engineOracle datu
bāzes sistēma
20
JDBC interfeisa izmantošana SQL komandu realizēšanai
SQL Java JDBC DB
21
Java klases Firma metodes FirmaInsert izmantošanas piemērs
1. Tabulas izveidošana
create table FIRMAS(F_NUM number Primary key,F_NOS varchar2(30),DIB_DAT varchar2(10));
2. Java klases Firma izveidošana
create or replace JAVA source named "Firma" asimport java.sql.*;import java.io.*;import oracle.jdbc.*;
public class Firma{ public static void FirmaInsert (int f_num, String f_nos, String dib_dat) throws SQLException { String sql = "insert into FIRMAS values (?,?,?)"; try {Connection conn = DriverManager.getConnection("jdbc:default:connection:"); PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, f_num); pstmt.setString(2, f_nos); pstmt.setString(3, dib_dat); pstmt.executeUpdate(); pstmt.close(); } catch (SQLException e) {System.err.println(e.getMessage());} } }
static – elements, kurš pieder klasei, bet nepieder klases eksemplāriem.void – metodes, kura neatgriež nekādu vērtību, apzīmētājs.throws – ģenerē īpašās situācijas, kuras var izveidoties metodē.try – bloks, kurš piedalās īpašo situāciju pārtveršanā.catch – īpašās situācijas (ja tāda izveidojas blokā, kurš definēts ar throws) apstrāde.
22
3. PL/SQL procedūras FIRMA_INSERT, kura izsauc klases Firma metodi FirmaInsert, izveide. create or replace procedure FIRMA_INSERT(f_num number, f_nos varchar2, dib_dat varchar2) as language JAVA name 'Firma.FirmaInsert(int, java.lang.String, java.lang.String)';
4. PL/sql procedūras FIRMA_INSERT izsaukšana.
call FIRMA_INSERT(1, 'AAA', '11-12-2011');call FIRMA_INSERT(2, 'BBB', '09-11-2012');
5. Datu bāzes tabulas FIRMAS satura apskate.
select * from FIRMAS; F_NUM F_NOS DIB_DAT---------- ------------------------------ ---------- 1 AAA 11-12-2011
23
Klases galvenās metodes main() izsaukšana. Savienojuma objekta veidošanai tiek izmantota DriverManager klase un jau esošais savienojums
0. Iepriekš definēto programmu nodzēšana (Java programmām obligāta).drop java source "JDBCVersija";drop procedure JDBCVERSIJA;commit;
1. Java klases definējuma ievade datu bāzē.create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;class JDBCVersija{public static void main (String args[ ]) throws SQLException {// Savienojuma objekta izveidošana (esošā savienojuma izmantošana)Connection conn = DriverManager.getConnection("jdbc:default:connection:");// Datu bāzes meta-datu objekta izveidošana un meta-datu iegūšanaDatabaseMetaData meta = conn.getMetaData();// Draivera (dziņa) versijas numura izvadeSystem.out.println("JDBC draivera versija = " + meta.getDriverVersion()); conn.close();}};
2. Java metodi izsaucošās Pl/SQL procedūras izveide.create or replace procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';
3. Datu bāzes sistēmas teksta buferu inicializēšana.SET SERVEROUTPUT ON;CALL dbms_java.set_output(2000);
4. Java metodi izsaucošās PL/SQL procedūras izpildes norāde.call SYSTEM.JDBCVERSIJA();JDBC driver version is 10.2.0.1.0
24
Piemērs. Klases metodes, kura atgriež tabulas rindu skaitu izsaukšana
import java.sql.*;import java.io.*;import oracle.jdbc.*;public class rinduSkaititajs{ public static int rinduSkaits (String tabName) throws SQLException{ Connection conn = DriverManager.getConnection("jdbc:default:connection:"); String sql = "SELECT COUNT(*) FROM " + tabName; int rows = 0; try{ Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()){rows = rset.getInt(1);} rset.close(); stmt.close();} catch (SQLException e) {System.err.println(e.getMessage());} return rows;}}
CREATE FUNCTION RINDU_SKAITS (tab_name VARCHAR2) RETURN NUMBER AS LANGUAGE JAVANAME 'rinduSkaititajs.rinduSkaits(java.lang.String) return int';
25