130 likes | 333 Views
Java rychlokvaška pro PDB. [ http://java.sun.com/ ]. Kafe ?. Java [en] = Kafe [cz] (hovor.) Jazyk… Překládá se na bytecode , který je interpretován JVM - kompilátor není JIT (obvykle) Java API knihovny [ http://dione.zcu.cz/java/sbornik.html ]. Jazyk Java.
E N D
Java rychlokvaška pro PDB [ http://java.sun.com/ ]
Kafe? Java[en] = Kafe[cz] (hovor.) Jazyk… Překládá se na bytecode, který je interpretován JVM - kompilátor není JIT(obvykle) Java API knihovny [ http://dione.zcu.cz/java/sbornik.html ]
Jazyk Java • OO, jako C++ (ale hezčí). • V Javě neexistuje přímý a nekontrolovaný přístup do paměti (referenční proměnné, kontrola při indexaci polí) • Java neobsahuje preprocesor, není povoleno přetěžování operátorů, jednotný zápis pro přístup k objektům i knihovnám • Statická typová kontrola (norma IEEE). Stejný výsledek v různých OS, používá Unicode • Použití vyjímek, bez vyjímky! • Prostředky pro paralelní běh částí programu (multithreading) • Dynamické a distribuované aplikace – update za běhu aplikace • Bezpečnost aplikací …
Konvence • Zarovnání kódu (tab)! • Třídy, rozhraní a konstruktory - identifikátor začíná vždy velkým písmenemString, StringBuffer • Metody a proměnné - identifikátor se skládá z malých písmen reader, getSize() • Balíky (packages) - identifikátor se skládá jen z malých písmen, ve složených jménech je oddělovačem tečka java.io • Konstanty - identifikátor z velkých písmen. MAX_VALUE
Javadoc • /** • * Returns an Image object that can then be painted on the screen. • * The url argument must specify an absolute {@link URL}. • * <p> • * This method … @throws • * • * @param url an absolute URL giving the base location of the image • * @return the image at the specified URL • * @see Image • */ • public Image getImage(URL url) { • try { • … • } catch (MalformedURLException e) { • return null; • } • } • Komentuje se: Class, function(), package.html, overview.html • http://java.sun.com/j2se/javadoc/writingdoccomments/
Jako C++ OO Objekt jako instance třídy… Syntaxe jako C++
Jazyk… • Jako C++ (ale hezčí) • Operátory jako C++ (ale pouze rozšiřující auto přetypování) • Programové struktury jako C++if, switch, for, do, while, break, continue, returntry, catch, finally, throwsynchronized • Datové typy = třídy (Integer, String, InputStream, Image…)mimo:byte, short, int, long, char (Unicode), float, double, boolean • Pole: int[][][] pole = new int[10][5][]; • Referenční typ objekt: … (new, null, this, super) (mimo interface, implements, abstract, final) >>>
Program.java • package client; • import java.io.*; • /** Třída… */ • public class Program { // extends Applikace • protected static int pocetProgramku; • /** Constructor ... */ • public Program() { • // super() ... • } // neexistuje destruktor! … protected void finalize() throws Throwable • /** main() ... */ • public static void main(String[] args) { • Program prvni = new Program(); • if (args.length != 0) { • for (inti =0; i <args.length; i++) System.out.println("Parametr["+ i +"] = "+args[i]); • } • else { • System.out.println("Nebyly zadány žádné parametry."); • } • } • }
Odkazy • Tutoriál [cz]http://dione.zcu.cz/java/sbornik.html • Thinkink in Java (Bruce Eckel)http://www.mindviewinc.com/ • Java by Sunhttp://java.sun.com/http://java.sun.com/javase/6/docs/http://java.sun.com/javase/6/docs/api/(java .*, javax .*, org.*) • Oracle Client a JDeveloper (oracle.*)http://www.oracle.com/technology/ • Stránky PDB ahttp://www.fit.vutbr.cz/~chmelarp/pdb/
JDBC Connection • set CLASSPATH=%ORACLE_HOME%\jdbc\lib\ojdbc14.jar;%ORACLE_HOME%\sqlj\lib\runtime12.jar; • import java.sql.Connection; • import java.sql.SQLException; • import java.sql.DriverManager; • import java.sql.Statement; • import java.sql.PreparedStatement; • import java.sql.ResultSet; • import oracle.jdbc.OracleResultSet; • import oracle.jdbc.OraclePreparedStatement; • // register the oracle jdbc driver with the JDBC driver manager • DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); • // connect pcuifs1.fit.vutbr.cz • Connection conn = DriverManager.getConnection("jdbc:oracle:thin:login/password" +"@pcuifs1.fit.vutbr.cz:1521:stud" ); • // note: set the autocommit to false for BLOBs (2-phase select-commit). • conn.setAutoCommit(false); • // create a JDBC Statement object to execute SQL in the database • Statement stmt = conn.createStatement();
… JDBC • // retrieve the next value in the sequence order • String SQLquery = "SELECT my_sequence.nextval FROM dual"; • OracleResultSetrset = (OracleResultSet)stmt.executeQuery(SQLquery); • rset.next(); • int nextval = rset.getInt("nextval"); • // retrieve the next value in the sequence order • String updateSQL = "UPDATE image_table SET name=?, width=? where id=" + nextval; • OraclePreparedStatement opstmt = (OraclePreparedStatement)conn.prepareStatement(updateSQL); • opstmt.setString(1, imageName); • opstmt.setInt(2, imageWidth); • opstmt.execute(); • opstmt.close(); • // commit all our changes • conn.commit();
Díky Otázky?