Java-technológia - Házi feladat
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
Néhány tapasztalat a házi feladattal kapcsolatban.
Packages
A házi feladatként írt programot package-be kell rakni. Ez kb. annyit jelent, hogy minden =.java= fájl a =package hu.bme.sch.akarmi.javahf= vagy hasonló sorral kezdődik, illetve a fájlokat az ennek megfelelő könyvtárba kell pakolni (=hu/bme/sch/akarmi/javahf=).
Szabadon választható elemek
A házival kapcsolatban van néhány joker követelmény, ami el lehet sütni minden feladat esetében, ha nincs más ötleted. Properties, XML, Logging, Preferences, Regexp, stb. A lekódolásuk sem túl bonyolult, de mondjuk a Logger elsőre bonyolult lehet.
Logger
Attól függetlenül, hogy elsőre kicsit nehéz átlátni, de elég hasznos jószág tud lenni. Egy lehetséges használata:
Kell minden osztályba egy privát statikus Logger tagváltozó:
import java.util.logging.Logger; import java.util.logging.Level; import java.util.logging.ConsoleHandler; ... class MyClassName { ... private static Logger = Logger.getLogger(MyClassName.class.getName()); ... }
Itt a logger neve az osztály minősített neve. Nyugodtan lehet static, mert a =getLogger()= metódus osztályonként egy loggert csinál, tehát minden példányhoz ugyanazt kapod meg. Ezután a logger metódusaival logolhatsz. Van néhány szint, alapból csak az =INFO= és az a felettiek kerülnek a kimenetre.
Ahhoz, hogy láss is valamit, kell valami megjelenítő. Ez a main metódusban érdemes felvenni. Itt egy =ConsoleHandler= szerepel, ami a konzolra írja az üzeneteket:
ConsoleHandler consoleHandler; Logger rootLogger; consoleHandler = new ConsoleHandler(); rootLogger = Logger.getLogger( OpenRelayTester.class.getPackage().getName()); rootLogger.addHandler(consoleHandler); consoleHandler.setLevel(Level.FINEST); rootLogger.setLevel(Level.FINEST);
A =rootLogger= a package-ünk összes logját tartalmazza, mert a =hu.bme.sch.akarmi.javahf= alatti osztályok loggerei továbbadják a logokat az ősöknek. Jelen esetben a =hu.bme.sch.akarmi.javahf= loggernek, ami megy tovább a =""= nevű gyökérlogger felé, de itt a saját package-ünk logjai is elegek lesznek. Beállítjuk, hogy lássunk mindent (=FINEST=), illetve a =consoleHandler= is jelenítse meg ezeket (átadjuk a =rootLogger= -ünknek a handler-t). Ezzel készen is vagyunk. Használhatnánk rootLogger-ként a "" gyökérloggert, de akkor mondjuk =FINEST= módban például az AWT logjait is megkapnánk, ami nekünk nem biztos, hogy kell.
Vannak másfajta handler-ek is, socket, memory, stb.
A többi osztályban a fentebb ismertetett módon felvéve az osztály saját private static logger-ét logolhatunk, azok itt mind meg fognak jelenni a konzolon. Konkrét üzenetek küldésére pedig van példa a kiadott fóliákon.
Értelmes használat lehet, ha például különböző mennyiségű üzenet kerül a konzolra a -v, -vv, -vvv parancssori kapcsolók hatására.
További elemek
A weblapon szereplő választható elemeken kívül talán még a következőek merülhetnek fel a fóliák alapján: Biztonságos hálózati kommunikáció, Soft, weak, phantom referenciák, Localization, Enumerációk, Assertion, Ant és persze a szálak (Threads).
Javadoc
A szükséges javadoc meglétét a Sun weblapjáról letölthető Doc Check Doclet pluginnal lehet ellenőrizni. A letöltött ZIP-ben van egy minta is a futtatásra. Kimenetként ez is html fájlokat generál. A kimeneti könyvtárban lévő fájlokat nem törli, úgyhogy azokat nem árt törölni generálás előtt. Ha minden stimmel, akkor kiírja, hogy no error, amúgy meg a javítandó dolgokat.
A doksi ellenőrzése valami ilyesmi:
javadoc -doclet com.sun.tools.doclets.doccheck.DocCheck -docletpath \ doccheck1.2b2/doccheck.jar -private -d javahf-doc/ -sourcepath javahf-java/ \ hu.bme.sch.akarmi.javahf
A javadoc legenerálása pedig:
javadoc -private -d javahf-doc/ -charset UTF-8 \ -sourcepath javahf-java/ hu.bme.sch.akarmi.javahf
-- palacsint - 2006.12.25.
-- palacsint - 2006.12.27.
-- palacsint - 2007.01.11.