Open-source citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 10. Přehled novinek v příspěvku na blogu.
Interaktivní editor binárních dat GNU poke byl vydán ve verzi 5.0 (seznam změn).
Byla vydána verze 0.85 telnet a ssh klienta PuTTY (Wikipedie). Řešeno je 5 zranitelností.
Byly publikovány novinky z vývoje GIMPu. Pracuje se na novém formátu souborů. Stávající binární XCF bude nahrazen "zazipovaným XML". XCF zůstane plně podporován pouze pro načítání starých souborů.
Workshop o umělé inteligenci v Dartmouthu proběhl před 70 lety, od 18. června do 17. srpna 1956. Dvouměsíční soustředění 6–11 informatiků, iniciované Johnem McCarthym, položilo základy oboru umělé inteligence.
Po 9 týdnech vývoje od vydání Linuxu 7.1 oznámil Linus Torvalds vydání Linuxu 7.2. Podrobný přehled novinek a vylepšení na Linux Kernel Newbies nebo LWN.net: první a druhá polovina začleňovacího okna.
Debian dnes slaví 33 let. Ian Murdock oznámil vydání "Debian Linux Release" 16. srpna 1993.
Probíhá hlasování o používání LLM při vývoji Debianu. Vývojáři Debianu mají na výběr 9 možností (návrhy A až H a žádný z nich).
Omarchy je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové major verzi 4.0.0 - The Quattro Release. Videopředstavení na YouTube. Celý desktop shell byl přepsán do Quickshellu. Přidána byla podpora pluginů.
Francouzská Ústavní rada zamítla zákaz používání sociálních sítí dětem mladším 15 let. Francouzská obdoba ústavního soudu uvedla, že opatření představuje nepřiměřený zásah do svobody projevu. Francouzský parlament zákaz schválil na konci července, začít platit měl od září. Šlo o první zákaz sociálních sítí pro děti v Evropě. Členové Ústavní rady se domnívají, že ustanovení „představuje zásah, který není přiměřený, nezbytný ani
… více »javac od Sunu od verze 1.5. A je to zdokumentovaná funkce, všichni (hm, skoro všichni) o ní vědí a vědí, že release projektu se dělá jako čistý build, nikdy jako výsledek inkrementální kompilace. Inkrementální kompilace je jenom pomůcka pro zrychlení vývoje (a třeba takový elcipse kompilátor dělá i horší věci, klidně přeloží soubor se syntaktickou chybou a příslušnou metodu s chybou nahradí pouze vyhozením výjimky, kde je zpráva o tom, že tam je syntaktická chyba).
Conf c = new Conf();, tak kompilátor předpokládá, že třída Conf bude vždy vypadat tak, jak je popsána v Conf.java a všemožné optimalizace na to nejspíš spoléhají. Kdežto když použiješ Conf c = Class.forName("Conf").newInstance();, tak by to mělo fungovat, protože se třída hledá až v runtimeu (stejně tak by parametrem forName mohla být proměnná).
Pokud tvrdíš, že třída Conf vypadá tak a tak a potom ji vyměníš, je to jako bys otevřel slinkovaný céčkový program v hexaeditoru a začal přepisovat části odpovídající nějakému objektu - taky radši použiješ shared object (.so).
Skrátka třídy, které se navzájem "jůzujou" je lepší považovat za "slinkované", v prvním případě používáš přímo třídu Conf, v druhém pouze třídu java.lang.Class, která se, předpokládám, měnit nebude.
A rada na závěr: na konfiguraci je XML.
PS: v mém projektíku si z různých důvodů nemůžu konfiguraci v XML dovolit
Tak použij -D parametry 
)
I tak bych to řešil properties souborem na ClassPath. Kvůli jedný blbině nemusíš zbytečně rekompilovat…
pokud nepotřebuje uživatel dynamické změnyCož pravděpodobně potřebuje, když vyměňuje .class soubory. Teď nemyslím konkrétně tenhle případ - zapínání/vypínání debugování se takhle řešit dá, ale jak už tu zaznělo, je potřeba před produkčním nasazením celý projekt přebuildovat.
Co se té třídy Conf týče:
zpravidla jsou tyto třídy javí interfaces, takže s nimi není třeba nikterak šachovat (když jo, tak se refaktoruje na obou stranách). A jak pak vypadá ta ConfImpl třída — to je už opravdu jedno. Jenom musí implementovat ten interface. Takhle třeba funguje vychytávka services.
Docela se mi líbí ten princip modulů v NetBeans. Každý modul je rozdělen na dvě části (pozor, zjednodušuji!): první je public API (ty interfáče) a pak pod tím — ta druhá — je private API s implementací. Pomocí ClassLoaderů je zajištěno, že jiný modul se k té druhé části nedostane. Takže já pak můžu mít několik modulů, které implementují stejné veřejné API a implementace dělá něco trošku/úplně jiného. Je to v podstatě ten model services, akorát víc dotažený.
Sranda. Zrovna včera jsem na tenhle paskvil upozornil v naší aplikaci.
Konstanty obencě by neměly být public nebo package public. Od toho jsou enumy. (Pro rejpaly: neříkám, že to nejde nebo že se to nesmí. Ale zrovna debug level je učebnicová ukázka, jak se to používat nemá.
)
Když není nazbyt, tak se to řeší takto:
public static final String SOMETHING;
static {
SOMETHING = "foo";
}
Takto se vytvoří jen vazba na třídu (aspoň současná verze javac ten trik neumí odhalit) a inlinování provede až ClassLoader za běhu.
Doporučuji si přečíst pár článků o modulárním programování v Javě. Toto konkrétně se řešilo před pár lety, když designovali GlassFish v3. Obecně o modulárním programování pojednává Jaroslav Tulach z NetBeans.
Ale třeba o tom vím jen velký kulový. Koneckonců, v Javě jsem dělal naposledy před rokem. 
Classloaderovou magii opravdu nemusím.
ClassLoadeři jsou mí nejlepší kamarádi. Ale já byl vždycky jinej.
Když si vzpomenu třeba na ResourceClassLoader, který natahoval aplikaci z resourců přímo z Jar archivu, takže jsem nemusel řešit takový ty lib/ adresáře a -cp parametry… Nebo můj miláček — EndorsedClassLoader. A endorsed.dirs šly tam, odkud přišly. 
No, až na to, že to ty knihovny přebalí a cosi to udělá s třídami — tak je to cool. Ale ten ClassLoader mi připadá trošku bezpečnější. 
.
Tiskni
Sdílej: