OZ 2011/1-2

M T 35 ORGANIZACIJA ZNANJA 2011, LETN. 16, ZV. 1 – 2 try { //Reflective operations calling Class.forName, //Class.newInstance, Class.getMethod, //Method.invoke, etc. } catch (ClassNotFoundException cnfe) { log(cnfe); throw cnfe; } catch (InstantiationException ie) { log(ie); throw ie; } catch (NoSuchMethodException nsme) { log(nsme); throw nsme; } catch (InvocationTargetException ite) { log(ite); throw ite; } To lahko poenostavimo z uporabo nadrazreda Exception , kar pa ni priporočljivo. Po novi sintaksi lahko kodo preoblikujemo. try { //Reflective operations calling Class.forName, //Class.newInstance, Class.getMethod, //Method.invoke, etc. } catch (final ClassNotFoundException| InstantiationException| NoSuchMethodException| InvocationTargetException e){ log(e); throw e; } ali še bolje try { //Reflective operations calling Class.forName, //Class.newInstance, Class.getMethod, //Method.invoke, etc. } catch (final ReflectiveOperationException e){ log(e); throw e;//Means ClassNotFoundExcept- on or … } Novost je tudi deklaracija final . Če ni definirana, potem mora biti izjema, ki jo vračamo, istega tipa, kot je definirana v bloku catch , sicer je lahko tudi dedovanega tipa. AVTOMATSKO UPRAVLJANJE VIROV Stavek "try-with-resouces" Pri odpiranju raznih sistemskim virov lahko pride do problemov, ko nam zaradi določene napake ne uspe sprostiti vseh virov. Programska koda za zagotavljanje zanesljivega sproščanja zasedenih virov je zelo zahtevna in nepregledna. Nova verzija jave nam to zelo olajša: try (InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest)) { byte[] buf = new byte[8192]; int n; while ((n = in.read(buf)) >= 0) out.write(buf, 0, n); } V zgornjem primeru sta znotraj novega stavka try deklarirana dva vira ( InputStream in OutputStream ). Oba vira se bosta na koncu zaprla, ne glede na to, ali se bo med izvajanjem zgodila napaka. PROJEKT JIGSAW Namen projekta je modularizacija okolja java. Sedaj se ob zagonu enostavne aplikacije, kot je npr. "Hello world", naložijo v pomnilnik vse knjižnice, ki jih aplikacija potrebuje ali ne, kar ima za posledico počasni prenos datotek preko omrežja, počasni zagon ter preveliko porabo pomnilnika (nekaj deset MB). To pa zagotovo ni primerno za majhne naprave (angl. small devices ), kot so mobilni telefoni itd. Cilji projekta so: • ukinitev spremenljivke classpath in datoteke JAR, • uvedba paketnih modulov za avtomatsko nalaganje in nameščanje, • označevanje odvisnosti paketov in modulov neposredno v programski kodi, • prenos (angl. download ) modulov na zahtevo, • optimizacija modulov med namestitvijo, • moduli, primerni tudi za majhne naprave (telefoni ...), • hitro nalaganje modulov pri zagonu oz. prvi uporabi, • zagotavljanje predvidljive uporabe paketov (sedaj nam isti razredi v različnih datotekah JAR povzročajo težave), • kontrola prisotnosti vseh modulov že pri namestitvi in ne šele pri zagonu, • upoštevanje različnih verzij modulov (odvisnost aplikacije od določene verzije knjižnice), • vključitev opcijskih ter navideznih modulov. POROČILO

RkJQdWJsaXNoZXIy MTAxMzI5