33
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 interf DBVS Dati un metadati Java programma ar SELECT JDBC interf

Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

  • Upload
    dodien

  • View
    245

  • Download
    9

Embed Size (px)

Citation preview

Page 1: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 2: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 3: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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.

Page 4: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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.

Page 5: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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.

Page 6: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

6

Javas tehnoloģiju izstrādes un pētniecības centri

Page 7: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 8: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 9: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 10: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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)

Page 11: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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 ...

Page 12: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 13: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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ē.

Page 14: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 15: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 16: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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; } }

Page 17: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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() ); } }

Page 18: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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.

Page 19: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 20: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

20

JDBC interfeisa izmantošana SQL komandu realizēšanai

SQL Java JDBC DB

Page 21: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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.

Page 22: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 23: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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

Page 24: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

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';

Page 25: Programmēšanas valoda Java - Web view1. Java programmēšanas valodas tēvs James Gosling, generally credited as the inventor of the Java programming language in 1994. He created

25