Rena kommandoradsapplikationer i Java kanske inte hör till vanligheterna nu mera, men det finns tillämpningar. Jag håller för tillfället på med ett sådant program. Det är en slags (av prestandaskäl) multitrådad övervakningsapplikation. Varje tråd ligger och pollar en databas efter något att arbeta med i ganska täta (några sekunders) intervall. När tråden hittar något att processa, så pratar den bl.a. JDBC med en stordatorapplikation.
Denna typ av beteende skulle vara ganska svårt att få till inom ramen för en appserver. Att starta trådar är ju inte aktuellt. Att använda Quartz eller ha ett cron-jobb som anropar en EJB via wget eller liknande skulle vara möjligt men verkar lite krystat, speciellt då den pollar så pass ofta.
En vanlig Java-applikation fick det bli, således. Vad bör man tänka på när man skriver en sådan applikation? Den är ju nästan som en slags server, som skall köra kontinuerligt. Den får inte gå ner så lättvindigt och den kommer sannolikt köra på en Linuxburk i ett serverrum någonstans utan något egentligt användargränssnitt. Här kommer således några tips för den standalone-inriktade. Läs mer >>
Det finns nu en open-source variant av IntelliJ. Det finns en del begränsningar i den, och när man läser listan förstår man att Jetbrains fortfarande hoppas få in licenspengar från stora kunder: Perforce-stödet (typiskt storprojekts/storföretags-SCM) är ett exempel. Men ändå!
Vi på Cygni som gillar IntelliJ måste förstås kontra när vi ser sådana här bra Eclipse-tips på bloggen.
Jag kom därvidlag att tänka på s.k. Live Templates i IntelliJ. De är en slags kortkommandon som är kopplade till parametriserade kodsnuttar.
Om man trycker Ctrl+J när man är i en Java-fil, så får man se något i den här stilen:
Listan över Templates
Man kan begränsa listan genom att skriva en del av ett kortkommando (t.ex. ”it”) innan man trycker Ctrl+J. Efter ett tag lär man sig förstås kortkommandona utantill – då är det bara att skriva ”itar” eller vad det nu är och sedan trycka Ctrl+J så får man sin kodsnutt.
Detta vore inte så märkvärdigt om det inte vore för det faktum att man kan skapa sina egna Live Templates.
En av de kraftfullaste delarna av objektorienterade språk är deras väl utbyggda stöd för inkapsling (encapsulation). Inkapsling i sin tur är en av de allra viktigaste sakerna att tänka på när man designar och skriver programkod. En applikation som består av komponenter som publicerar rena gränssnitt och gömmer implementationsdetaljer har oerhörda fördelar framför sådana som inte gör det: Man kan utveckla, förstå, testa, debugga, optimera och underhålla komponenterna separat, vilket gör alla dessa saker mycket lättare.
De flesta javautvecklare känner väl till Javas system med modifierarna public, protected och private samt det implicita ”package private” som man får om man inte skriver någon modifierare alls. Modifierarna fungerar olika beroende på var man använder dem någonstans: Läs mer >>
När man använder log4j i ett stort system tenderar det finnas många olika log4j.xml eller log4j.properties i olika mappar: En för testning, en för produktion, några olika lokalt på olika servrar osv.
Sätt -Dlog4j.debug=true på javas kommandorad, så skrivs en massa bra information ut på konsollen, bl.a. vilken fil den tittar i!