Groovy RSSReader

No niin, Groovy ja Grails kurssia pitäessä piti piruuttaankin tehdä taas RSS syötteen lukuohjelmaa, samoin kuin tein aiemmin Scalalla. Päädyin itse tämmöiseen:

new XmlSlurper().parse('http://feeds.feedburner.com/tieturi').channel.item.findAll { println "- ${ it.title }"}

Se on siinä, ilman mitään importteja sun muita. Tulostaa Tieturin blogin päätason otsikot alekkain. On nää kauniita nää uudet dynaamiset kielet.

Osaakohan joku lyhentää tuotakin? 😉

Sampo luopuu Javasta

Client pään Java on kokenut kovia iskuja viime aikoina, melkein voisi puhua viikon tietoturvareiästä. Jatkuvalla syötöllä on löytynyt heikkouksia ja reikiä joita jopa kaupataan kelle hyvänsä joka haluaa niitä käyttää. Oracle on pelaillut catch-up peliä mutta paikkoja tulee myöhässä, ja näemmä vasta kun haavoittuvuus päätyy lööppeihin, ja samalla kun tulee paikka löytyy uusi reikä.

Tämä ei tietysti eroa siitä mitä Flashille tapahtui aikanaan, eikä siitä mitä HTML5:lle tulee tapahtumaan jahka se yleistyy. Eikä tietysti vaikuta niinkään palvelin-Javaan joka on edelleen Javan suurin käyttöalue. Mutta on se aika ikävää työasemien osalta. Itsekin olen päivitellyt updateja tiuhemmin kuin yleensä, ja yrittänyt sulkea Javan pois selaimista joita en käytä. Sampo pankin asiakkaana on jopa ollut ikävää käytellä verkkopankkia joka vaatii Java Applet tukea toimiakseen ollenkaan. Muun hauskan lisäksi kotona 64-bittisellä win8:lla ainoa selain jolla sampo pankin Java applet toimii oli Microsoft Internet Explorer – joka perinteisesti on ollut kävelevä tietoturvareikäjuusto jota en juuri edes käynnistä vuosiin jos voin sen vältellä. Luotettu Chrome ja Firefox kieltäytyvät eri tavoin yhteistyöstä – Chrome valittaa että Javaa ei ole asennettu vaikka sen on moneen kertaan eri variaatioina asennettukin, ja Firefox vain mystisesti jää pyörimään, lataan Javaa-looppiin.

Mutta tämä ei lupaa kovin hyvää JavaFX-tekniikalle, joka muutenkin on kyseenalainen HTML5:sen kanssa kilpailuasetelmassa oleva teknologia. Se vaatii vakaan ja turvallisen Java-asennuksen toimiakseen, ja onko sellaista luvassa enää? Asia on sikäli murheellinen että JavaFX on kaunista, esteettistä, tehokasta. Mutta ellei tässä tapahdu muutoksia se on tuhoon tuomittu jo alkumetreillään. Aika näyttää, tämä on Javan vuosi, sillä tulossa on massiiviset ja mullistavat Java SE 8 sekä Java EE 7 päivitykset – paljon tulee muuttumaan Java maailmassa.

 

Lähde:

http://yle.fi/uutiset/danske_bank_luopuu_javasta_-_verkkopankkiin_uudistuksia/6470709

 

JSF 2.2 ja kunnon HTML-yhteensopivat templatet

No niin, JavaServer Faces on elänyt aika elinkaaren. Ensimmäisessä versiossaan siinä käytettiin JSP tekniikkaa sivupohjana, ja se mahdollisti hirvitykset kuten:

<h2>Categories</h2>
<ul>
 <% 
 ArrayList<Category> categories = Category.selectAll();
 for (int i = 0; i < categories.size(); i++) {
 %>
 <li>
 <h:form>
 <h:inputHidden binding="#{BookCategories.bookBean.categoryId}" value="<%= categories.get(i).getId() %>" />
 <h:commandLink action="#{BookCategories.filterByCategory}">
 <h:outputText value="<%= categories.get(i).getName() %>" />
 </h:commandLink>
 </h:form>
 </li>
 <% } %>
</ul>

Joka ei lisäksi tietysti edes toimi! Mutta vaikka toimisikin, antaa myös sydänkohtauksen mille hyvänsä HTML editorille (ja Web Developer rassukalle joka yrittää saada sivua näyttämään hyvältä selaimessa)

JSF 2 paransi hieman asiaa ottamalla faceletit käyttöön, mutta edelleen sivuleiska on täynnään kaikenlaista ei-html standardimaista puppua:

    	<h1>JSF 2 dataTable sorting example</h1>
    		<h:dataTable value="#{order.orderList}" var="o"
    			styleClass="order-table"
    			headerClass="order-table-header"
    			rowClasses="order-table-odd-row,order-table-even-row"
    		>

    		<h:column>
    			<f:facet name="header">
    			   <h:commandLink action="#{order.sortByOrderNo}">
    				Order No
    			   </h:commandLink>
    			</f:facet>
    			#{o.orderNo}
    		</h:column>

    		<h:column>
    			<f:facet name="header">
    				Product Name
			</f:facet>
    			#{o.productName}
    		</h:column>

    		<h:column>
    			<f:facet name="header">Price</f:facet>
    			#{o.price}
    		</h:column>

    		<h:column>
    			<f:facet name="header">Quantity</f:facet>
    			#{o.qty}
    		</h:column>

    	    </h:dataTable>

Samaan aikaan muut frameworkit kuten Wicket tekevät puhtaita HTML sivuleiskoja. Nyt JSF 2.2:sen myötä näyttäisi sama piirre olevan tulossa myös Java EE alustan web-standardikehikkoon JSF:ään, tässä maistiainen tulevasta:

 

< !DOCTYPE html>
< html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:jsf="http://java.sun.com/jsf" xmlns:f="http://java.sun.com/jsf/core">
 < head jsf:id="head">
 < title>Putting it all together < /title>
 < script jsf:target="body" jsf:name="js.js"/>
 < link jsf:name="css.css" rel="stylesheet" type="text/css" />
 < /head>
 < body jsf:id="body">
 < form jsf:id="form" jsf:prependId="false">
 < label jsf:for="name">Name < /label>
 < input jsf:id="name" type="text" jsf:value="#{complex.name}">
 < f:ajax execute="@this" render="progress"/>
 < /input>
 < label jsf:for="tel">Tel < /label>
 < input jsf:id="tel" type="tel" jsf:value="#{complex.tel}">
 < f:ajax execute="@this" render="progress"/>
 < /input>
 
 < label jsf:for="email">Email < /label>
 < input jsf:id="email" type="email" jsf:value="#{complex.email}">
 < f:ajax execute="@this" render="progress"/>
 < /input>
 
 < label for="progress">Progress < /label>
 < progress jsf:id="progress" max="3">#{complex.progress} of 3 < /progress>
 
 < /form>
 < /body>
< /html>

 

 

 

Pieni yksityiskohta? Yep, mutta ne ratkaisevat. Itse pidän aina siitä kun asiat menevät yksinkertaisempaan suuntaan:

Java on ollut aina hyvä varuste raskaisiin isoihin yrityssovelluksiin (joskin tästä voidaan käydä uskonsotia, mutta uskottavia referenssejä on riittävästi Javan puolesta 😉 – mutta viime vuosina sillä on voinut näperrellä nopeammin, halvemmin, ketterämmin myös pienempiä start-up juttuja uskottavalla tavalla.

Jos ensimmäisen prototyypin saa käyntiin tunneissa tai minuuteissa viikkojen sijaan, saa aiemmin arvokasta palautetta, ja etenkin ketterissä hankkeissa tämä on elintärkeää.

Java EE tietoturva

Törmäsin hyvään esitykseen turvallisesta Java EE rakentamisesta.  Ei mitään uutta eikä mullistavaa, mutta samoja hyviä käytäntöjä joita itsekin allekirjoitan:

http://www.java-tv.com/2012/12/04/java-ee-security-in-practice-with-java-ee-6-and-glassfish/

Kyllähän tiedetään mikä tekee ratkaisusta turvallisen. Silti häkellyttävää miten paljon turvatonta koodia on liikenteessä. Tietoturva on usein se asia joka jää hakkuupölkylle yhdessä testauksen kanssa kun tulee kiirettä.

Tähän voi tulla muutos. Briteissä on jo ollut pari vuotta voimassa säädös jonka nojalla yritystä voidaan sakottaa tietomurroista jotka ovat johtuneet huonosta tietoturvasta järjestelmissä – sakko voi nousta 500,000 puntaan asti. Tietomurtoja ovat esim. tilanteet jossa asiakkaiden salasanoja tai henkilö tai maksutietoja joutuu vääriin käsiin huolimattomuuden tai haavoittuvuuden vuoksi. EU puuhastelee lainsääsäntöä (General Data Protection Regulation) jossa rikkeestä voi päästä maksamaan sakkoa 2% yrityksen vuotuisesta liikevaihdosta – tai litteän miljoonan. Auts!

Kun tietoturva nostaa päätään myös Open Web Application Security Project OWASP on nousussa, antaen vähän kättä pidempää tietoturvahaavoittuvuuksien tunnistamiseen ja koulutuksen formalisointiin. OWASP on hyvin sovellettavissa esim. Java web hankkeisiin tai Scala tai Grails projekteihin.

Lähde:

http://ec.europa.eu/justice/data-protection/document/review2012/com_2012_11_en.pdf

http://en.wikipedia.org/wiki/OWASP

Android 4.2 Developer Options

No niin, uusi vuosi, vanhat kujeet. Törmäsin aamulla artikkeleita lukiessani kiintoisaan juttuun. Onko Android puhelimestasi hukkunut jonnekin kehittäjävaihtoehdot? Tiedäthän, USB-vianetsintä, debuggausasetukset, sijaintien imitointi, etc.

 

Näyttäisi siltä että Android 4.2 versiossa on Developer Options osio piilotettu syvemmälle puhelimen uumeniin. Saat ne esille niinkin epätodennäköisellä tavalla kuin menemällä asetuksiin, kohtaan About Phone/About Tablet/Tietoa Puhelimesta, ja naputtamalla sormea buildinumeron päällä (Ohjelmistoversion numero) 7 kertaa.

Unbelievable? Believe it! 😉

Lisäksi kokemus on aika hauska, kun alat naputtamaan buildinumeroa saat palautetta etenemisestä.

Screenshot_2013-01-08-08-30-21

Screenshot_2013-01-08-08-30-30

Screenshot_2013-01-08-08-31-14

Screenshot_2013-01-08-08-31-20

 

 

 

Lähde: http://java.dzone.com/articles/android-42-tip-1-%E2%80%93-how-reveal?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29