Java 8 : Se ei oo sun isoisän Java enää…

Jep, olen benchmarkannut aiemmin muita ohjelmointikieliä kuten Scala ja Groovy sillä miten paljon koodia vaatii tehdä rss-feedin lukija, joka esim. poimii sieltä title ja link tageja. Vanhalla Javalla koodaten – juu tuo vie hetkenkin verran. Ja sisältänee while tai for-silmukkaa ja imperatiivista koodia. Ei siinä mitään, koodaushan on kivaa.

Tässä java 8 versio RSS lukijasta joka lukee ja tulostaa Tieturin blogin otsikoita ja linkkejä – käytössä Streamit ja Lambdat:

new BufferedReader(
  new URLReader(new URL("http://feeds.feedburner.com/tieturi")))
    .lines()
    .filter(a -> a.contains("<title>") || a.contains("<link>"))
    .forEach(a -> System.out.println(a));

Jep, one-lineri. Valmistaudu näkemään tällaista koodia enemmänkin.. 😉

 

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? 😉

Scala of the day – RSS reader

Pidin juuri Scala kurssia ja taas tuli hurmaannuttua kielen yksinkertaisesta eleganssista tietyissä operaatioissa. Ensi vuonna jää nähtäväksi miten Java 8 Lambda Expressions vastaa tähän.

Mutta tässä yhden harjoitustehtävän hedelmä; koodi joka lukee Tieturin blogista kaikki otsikot ja listaa ne ruudulle:

  for ( line
       <- Source.fromURL("http://feeds.feedburner.com/tieturi").getLines
        if line contains("<title>") )
          println (line)

Ja tässä tämänhetkinen tulostus:

 <title>Tieturi</title>
  <title>Tieturi</title>
  <title>Työympäristö muuttuu yhä vaativammaksi, pysyykö työntekijä tahdissa mukana?</title>
  <title>Arvoista hyveisiin – päämääristä tuloksiin!</title>
  <title>Lean IT – onko palveluprosessissa läskiä?</title>
  <title>Maailmaa muuttamassa yhdessä Jurgen Appelon kanssa</title>
  <title>Kokonaisarkkitehtuuri on kaikkien asia – ei vain tietohallinnon!</title>
  <title>Tieturilaisten etäpäivästä ekopäivä</title>
  <title>HTML5 ja JavaScript – kahvipöydässä kuhisee</title>
  <title>Windows Phone 8 tähtää varteenotettavaksi yrityspuhelimeksi</title>
  <title>Pienennä hiirijalanjälkeäsi</title>
  <title>Tervetuloa IPv6!</title>

I likes it! 😉

Otetaanpas tuolta kommenttiosiosta vielä tiiviimpi ja scalamaisempi tapa tehdä sama:

Source.fromURL(“http://feeds.feedburner.com/tieturi”).getLines.filter(_.contains(“<title>”)).mkString(“\n”)