I ett av våra projekt behövde jag ”tvätta” data som kom in via importer från diverse externa källor. Tvättningen består av att ta bort HTML-element såsom script-taggar, styling-attribut och för att ge ett bättre skydd mot XSS.
Då hittade jag jsoup som är ett litet javabibliotek för att enkelt kunna parsa/tvätta HTML
Läs mer >>
Denna artikel ingår i serien Spring från början och kommer behandla det springstöd som finns för OSGi. Denna artikel är inte direkt en ”tutorial” utan ger främst en orientering till OSGi och Spring Dynamic Modules och gör ett försök till att peka på lämpliga användningsområden.
Vad är OSGi och vad är det bra för?
Förkortningen , vilket i vart fall inte hjälper mig att förstå vad OSGi egentligen är.
OSGi står tydligen för Open Service Gateway Initiative, men det har inte hjälpt någon att förstå vad det OSGi egentligen är får något. OSGi-standarden är helt kort en standard för modularisering av javaapplikationer.
OSGi används i allt från inbäddade system, mobiltelefoner till en flerskiktade webbapplikationer. Standarden har funnits i flera år och har tidigare främst används i inbäddade system. Det är först på senare år som OSGi har blivit aktuellt att använda i serverapplikationer. Den kanske mest kända applikationen som bygger på OSGi är den populära utvecklingsmiljön Eclipse, som använder OSGi i sitt plug-in system.
Mer konkret så specificerar standarden tre områden; paketering av moduler, tjänsteregister och modulers livscykler. Läs mer >>
EJB 3.0 är den nu gällande versionen av Java Enterprise Beans(EJB) arkitekturen som ingår i Java EE 5. Syftet med EJB 3.0 är att förbättra arkitekturen för EJB och minska komplexiteten för utvecklaren av EJB applikationer. Detta innebär tex följande förbättringar:
- Annoteringar, det finns ett gäng med annoteringar som man kan använda sig utav för att förenkla arbetet. Dessa annoteringar minskar antalet klasser och interface som man måste skapa och man behöver inte skapa någon deployment descriptor (om man inte vill).
- Defaulta värden, man skall slippa specifiera en massa vanliga förväntade beteenden och krav från EJB-containern.
- Inkapsling av beroenden och JNDI åtkomst via annoteringar och dependency injection (DI)
Businessinterfacet för en sessionsböna kan vara ett vanligt Java-interface, det behöver inte vara av typen EJBObject, EJBLocalObject eller javax.rmi.Remote
Home-interfacet behövs inte längre för sessionsbönor.
- Minskning av krav av användning av checked exceptions
- En interceptor funktionalitet finns för sessions- och message-driven-bönor.
- Entitetsbönor har fått en helt egen specifikation, Java Persistence API (JPA), är numera vanliga POJO’s.
Det finns ett par olika typer av EJB:er, sessionsbönor och message-driven-bönor. Sessionsbönorna kommer i två olika smaker, Stateless och Stateful. Entitetsbönorna har ju som sagt ersatts med JPA entiteter. Jag tänkte gå igenom dessa med små korta exempel. Läs mer >>
Häromdagen råkade jag hitta eclipse-pluginen q4e som gör att du kan använda Maven 2 från Eclipse IDE. Projektet huserar på Google Code och några av de features som nämns är:
-
Köra Maven goals från IDE:n
-
Dependency management via Maven POM, automatisk nedladdning av beroenden
-
Hålla Eclipse classpath i sync med Maven POM
-
Beroendegraf
-
Import av Maven 2 projekt
-
Wizard för att skapa nya projekt genom archetypes
-
Möjlighet att importera parent projekt (POM projekt)
-
Möjlighet att avbryta Maven-byggen
-
Beroendeanalysverkty
-
WTP-stöd
Pluginen har väldigt många av de features som finns i pluginen m2eclipse som jag tidigare skrivit om här. Efter att ha labbat lite med pluginen så har jag fått känslan av att q4e är stabilare, rappare och snyggare än m2eclipse, dock krävs Eclipse 3.3 (m2eclipse går att köra på Eclipse 3.2). För mer information gällande q4e rekommenderar jag deras wiki och denna jämförelse mellan m2eclipse och q4e.
Vad är en produkt?
Utveckling av mjukvaruprodukter skiljer sig till viss del från traditionell systemutveckling. Detta inlägg belyser några viktiga skillnader mellan systemutveckling och produktutveckling, hur man kan undvika vissa fallgropar genom att arbeta strukturerat och genom att använda rätt typer av verktyg.
Läs mer >>
Hittade en annan trevlig sökfunktion som löser problematiken att lokalisera vilken jar-fil som saknas när applikationen kastar java.lang.NoClassDefFoundError eller java.lang.ClassNotFoundException. Typiskt är det något bibliotek som du har beroende till endast under runtime. Saknar du som jag MIMEContentImpl för att exekvera dina testfall kan man lokalisera detta genom att använda JarSearch och fylla i klassnamn (eller paket) och söka.
Tipsade för ganska länge sen om Eclipse-pluginen JadClipse som med jad dekompilerar en .class fil i det fall det inte finns någon källkod kopplad. Med Maven och m2eclipse så får man ofta med sig källkoden, men det finns vissa bibliotek där det kan saknas. Inget mer Attach source…
Maven 2 och Eclipse är två av de mest använda verktygen för javautveckling på marknaden idag. Maven 2 används för att automatisera byggen, assembly och deployment, rapportgenerering medan Eclipse främst används som IDE.
Integration mellan dessa två produkter har inte alltid varit smärtfri men nu finns (minst) två integrationssätt som verkar lovande, M2Eclipse och Buckminster.
Läs mer >>
Jag läste en intressant och nästan lite oroande intervju med Cliff Click i TheServerSide om Javas minnesmodell, trådsäkerhet, multiprocessorsystem och problem runt detta. Flera CPUer eller andra CPU-familjer (speciellt icke-x86 CPUer) ger komplikationer för multitrådade javaprogram. Det finns risk att ditt program slutar fungera, går betydligt långsammare eller timeoutar om du lämnar din enprocessormiljö.
Intervjun är tekniskt avancerad och lärorik – läs den!. För er som inte orkar läsa den följer här en sammanfattning av vad jag tyckte var intressant och som jag fattade något av.
Läs mer >>
Använder ert projekt Apache Ant? Då är det rätt troligt att följande stämmer in:
- Ant-scripten är långa, komplexa, svåröverskådliga och svårförvaltade.
- Det finns mycket copy/paste kod i Ant-scripten.
- Ni checkar in era externa jar-filer i ert SCM (vilket medför att det tar lång tid att synka ut kodbasen och det är svårt att hålla reda på vilka versioner av vilken jar-fil som används eftersom namnstandarden på externa jar-filer varierar kraftigt).
- Ant-scripten kopierar väldigt mycket jar-filer under assembly och deploy.
Som en lösning på detta finns Maven som tar bort det mesta av den komplexitet som typiskt finns i ett Ant-script genom att kapsla in de vanligaste funktionerna som krävs vid bygge och assembly/deploy. Det som Maven dock är allra bäst på är Dependency Management d.v.s. att hantera beroenden mellan olika projekt och moduler (interna och externa).
Det kan dock vara svårt att övergå från Ant till Maven om de Ant-script som finns i en organisation innehåller mycket logik eller om förutsättningarna för en sådan förändring inte är de rätta. Då kan ett steg i rätt riktning vara att använda Mavens Ant-tasks som ”magiskt” kan hantera Dependency Management à la Maven fast i ett Ant-script. Ta en titt på http://maven.apache.org/ant-tasks.html för mer information.