OZ 2011/1-2

M T 37 ORGANIZACIJA ZNANJA 2011, LETN. 16, ZV. 1 – 2 Močno je razširjena podpora za atribute datotečnega sistema: interface BasicFileAttributes { boolean isRegularFile(); boolean isDirectory(); boolean isSymbolicLink(); boolean isOther(); long size(); FileTime lastModifiedTime(); FileTime lastAccessTime(); FileTime creationTime(); ... } BasicFileAttributes attrs = Attributes. readBasicFileAttrbutes(file, NOFOLLOW_LINKS); long now = System.currentTimeMillis(); Attributes.setLastModifiedTime(file, FileTime.fromMillis(now)); Podpora za atribute POSIX (pravice dostopa): interface PosixFileAttributes extends BasicFileAttributes { UserPrincipal owner(); GroupPrincipal group(); Set<PosixFilePermission> permissions(); } PosixFileAttributes attrs = Attributes. readPosixFileAttrbutes(file); Set<PosixFilePermission> perms = EnumSet.of (OWNER_READ, OWNER_WRITE, GROUP_READ); Attributes.setPosixFilePermissions(file, perms); WatchService omogoča registracijo in spremljanje sprememb v datotečnem sistemu. Ob spremembi registriranih poslušalcev Watchable se sproži dogodek WatchEvent . Primer registracije poslušalca za kreiranje oz. brisanje datotek v danem imeniku: WatchService watcher = FileSystems. getDefault().newWatchService(); Path dir = ... WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE); Spremljanje sprememb: for (;;) { WatchKey key = watcher.take(); for (WatchEvent<?> event: key. pollEvents()) { if (event.kind() == ENTRY_CREATE){ Path name = (Path)event.context(); System.out.format("%s created%n", name); } } key.reset(); } Definiramo lahko druge ponudnike datotečnih sistemov. Primer dostopa do arhiva ZIP : Path zipfile = … Map<String,?> env = Collections. emptyMap(); FileSystem zipfs = FileSystems. newFileSystem(zipfile, env, null); Path top = zipfs.getPath("/"); JDK je končno dobila močno orodje za manipulacijo datotečnega sistema, ki je enostavno za uporabo ter razširljivo. Sedanji razred java.io.File lahko enostavno pretvorimo v novi java.nio.file.Path z metodo File.toPath() . OPTIMIZACIJA JAVE Za dobro uporabniško izkušnjo je zelo pomembno načrtovanje arhitekture aplikacije, saj je pravilna arhitektura ključnega pomena za hitrost delovanja, zagona, porabo pomnilnika in razširljivost (skalabilnost) aplikacije. Ponavadi se posamezne kategorije izključujejo, saj povečanje hitrosti delovanja pomeni hkrati tudi večjo porabo pomnilnika. Obstajajo strategije, kako načrtovati aplikacije v java za dosego dobre uporabniške izkušnje ob hkratni skromni uporabi računalniških virov. Na konferenci se je veliko predavateljev ukvarjalo z vprašanji o optimizaciji jave, o delovanju sprostilca pomnilnika ( garbage collector – GC ), orodjih za nadzor aplikacij in optimizacijo programske kode (Java profiler). Vhodno-izhodna zmogljivost (I/O Performance) Branje in pisanje datotek je lahko časovno zelo potratno opravilo. Za te potrebe se v javi uporabljata abstraktna razreda java.io.InputStream in java.io.OutputStream , ki zagotavljata dostop do različnih tipov podatkov, kot so diski in mreža. Paket java.io vključuje mnoge filtre, ki nadgradijo osnovne podatkovne tokove. Med pomembnejšimi tipi filtrov sta BufferedInputStream ter BufferedOutputStream . POROČILO

RkJQdWJsaXNoZXIy MTAxMzI5