<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>java9</title>
	<atom:link href="http://java9.dev.nine.dk/feed/" rel="self" type="application/rss+xml" />
	<link>http://java9.dev.nine.dk</link>
	<description>Endnu en WordPress-blog</description>
	<lastBuildDate>Fri, 24 Sep 2010 00:50:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JavaOne Keynote: Java Frontiers</title>
		<link>http://java9.dev.nine.dk/2010/09/javaone-keynote-java-frontiers/</link>
		<comments>http://java9.dev.nine.dk/2010/09/javaone-keynote-java-frontiers/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 00:50:22 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[fremtidsforskning]]></category>
		<category><![CDATA[gephi]]></category>
		<category><![CDATA[keynote]]></category>
		<category><![CDATA[ray kurtzweil]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=331</guid>
		<description><![CDATA[Jeg (Jesper) fulgt torsdag morgen den sidste JavaOne keynote om &#8220;Frontier Java&#8221;, altså om livet helt ude på kanten af [...]]]></description>
			<content:encoded><![CDATA[<p>Jeg (Jesper) fulgt torsdag morgen den sidste JavaOne keynote om &#8220;Frontier Java&#8221;, altså om livet helt ude på kanten af hvad Java kan (men, modsat den oprindelige amerikanske &#8220;frontier&#8221;, formentlig uden indianere og guldfeber). Der var en længere præsentation af Ray Kurtzweil, om hvordan teknologien udviklede sig eksponentielt imens vi mennesker kun kan følge med i det logiske: Vækst i antallet af transistorer per &#8220;valutaenhed&#8221; vil vokse eksponentielt, og tingene vil blive mindre og mindre. Og til alle dem, der kommer og påpeger at vi har nået visse grænser for hvor små baner, elektromagnetiske bølger  kan følge, var hans svar: Når udviklingen i et paradigme er slut, kommer der bare et nyt paradigme. Hvis jeg ellers kan regne burde man så kunne have millarder af transistorer anbragt på en proton i min eller mine børns levetid &#8211; det køber jeg ikke. Og hans klokfrekvens-fremskrivning holdt heller ikke. Men: Jeg må give manden at hans fremstår visionær på en måde som umiddelbart kan berolige de fleste af os &#8220;det kan man da ikke&#8221;-faktabaserede individer. &#8220;Center for fremtidsforskning&#8221; &#8211; på stereoider (eller måske grøn te).</p>
<p>Lidt baggrundschecks på manden er dog ikke af vejen, specielt hans tanker om biologi og sundhed må siges at tangere kvaksalveri, men det er jo også en anden verden: Følger man et dårligt råd af en comp.sci. forsker har man måske spildt tid og penge, og står med håneretten; får man et forkert råd af en læge eller en biolog er man i værste fald død.</p>
<p>Ja, der ryger nok en af hans bøger på min læseliste, men også en fra hans &#8220;skeptikere&#8221;.</p>
<p>Så var der demoerne, og de var hver for sig interessante:</p>
<ul>
<li>En kunne visualisere grafdata (<a href="http://gephi.org">gephi.org</a>)</li>
<li>En kunne <a href="http://germancarscene.com/2010/06/26/new-look-reaffirmed-mission-for-autonomous-tts-pikes-peak/">få en bil til at styre sig selv</a> &#8211; med Java RTS (eller, viste det sig, delvist med Java RTS)</li>
<li>En kunne <a href="http://osama-oransa.blogspot.com/2010/09/2010-dukes-choice-awards-winner.html">samle sundhedsdata</a> fra en håndholdt dims og vise dem på en telefon eller webside</li>
<li>En kunne <a href="http://www.intergraph.com/transportation/ustransportationsolutions.aspx">scanne biler i realtid</a></li>
<li>En der havde <a href="http://www.livescribe.com">en pen, der var en computer</a>.</li>
<li>Jeg har vist glemt én til?</li>
</ul>
<p>Fint nok og spændende (pånær måske visualiseringsgutten), men jeg synes det mest tankevækkende var at have den eksponentielle vækst i baghovedet under præsentationerne: Tænk hvad vi kan visualisere, styre, scanne, indsamle, etc. x10 eller x100. Tænk hvis de sensorer, der skal bruges er 10x mindre end i dag &#8211; eller 100x. Spændende, og ikke mindst skræmmende!</p>
<p><strong>Plus: </strong>Mulighederne er &#8220;mind-boggling&#8221;.</p>
<p><strong>Minus:</strong> Mulighederne er &#8220;scary as hell&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/javaone-keynote-java-frontiers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concurrency Grab Bag: More Gotchas, Patterns, and Tips on Practical Concurrency</title>
		<link>http://java9.dev.nine.dk/2010/09/concurrency-grab-bag-more-gotchas-patterns-and-tips-on-practical-concurrency/</link>
		<comments>http://java9.dev.nine.dk/2010/09/concurrency-grab-bag-more-gotchas-patterns-and-tips-on-practical-concurrency/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 23:32:20 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[ConcurrentHashMap]]></category>
		<category><![CDATA[double checking]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=319</guid>
		<description><![CDATA[Jeg (Jesper) afrunder min JavaOne dækning med eBay gutternes præsentation af diverse patterns og anti-patterns.
&#8220;Double-checked locking&#8221; on collection

class Unsafe &#123;
 [...]]]></description>
			<content:encoded><![CDATA[<p>Jeg (Jesper) afrunder min JavaOne dækning med eBay gutternes præsentation af diverse patterns og anti-patterns.</p>
<h2>&#8220;Double-checked locking&#8221; on collection</h2>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Unsafe <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">private</span> Map<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>String, Object<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> map <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">void</span> useMap<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>map <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      initMap<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">// use map</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">void</span> initMap<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>map <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      map <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HashMap<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>String, Object<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #666666; font-style: italic;">// fyld i map</span>
   <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Boom: ConcurrentModificationException!</p>
<p>Første løsning: Så lad dog være med at være lazy!</p>
<p>Ellers: &#8220;Cheezy read-write pattern&#8221;: Brug lokal variabel i initMap, og brug volatile på mappen.</p>
<h2>Many readers &#8211; few writers</h2>
<p>Hvor der er få, der skriver (og typisk serielt), men mange, der skriver. Løsninger:</p>
<ul>
<li>Synchronized Data Structures</li>
<li>ReadWriteLock</li>
<li>Copy-on-write</li>
<li>ConcurrentHashMap.</li>
</ul>
<p>De har forskellige fordele og ulemper, men hvis du ændrer data sjældent nok, så bruge copy-on-write.</p>
<h2>Many writers, few readers</h2>
<p>Logging, f.eks&#8230; her skriver man jo en masse data, men de læses ikke, de skrives bare videre. Tre mulige</p>
<ul>
<li>Synchronized Data Structures: Dårlig idé! Blokerer for ofte.</li>
<li>ConcurrentHashMap and friends: Som regel den bedste idé.</li>
<li>Asynchronous (background processing): God idé, specielt hvis opgaven er seriel i natur, f.eks. logning til disk.</li>
</ul>
<p>Hvis man bruger den sidste og bruger TaskExecutor, så husk at dine køer kan løbe fuld.</p>
<ul></ul>
<h2>Husk nu:</h2>
<p>Hvis koden ikke er en performance bottleneck, så LAD VÆRE med at optimere på det.</p>
<p>Brug nu bare ConcurrentXxx-klasserne&#8230;</p>
<p><strong>Plus:</strong> Manden ved noget om det han taler om.</p>
<p><strong>Minus: </strong>Praktisk bøvl og dumme spørgsmål.</p>
<p>Godt, det var JavaOne 2010: Nu videre til fest og restitution!</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/concurrency-grab-bag-more-gotchas-patterns-and-tips-on-practical-concurrency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Garbage Collection Mythbusters</title>
		<link>http://java9.dev.nine.dk/2010/09/the-garbage-collection-mythbusters/</link>
		<comments>http://java9.dev.nine.dk/2010/09/the-garbage-collection-mythbusters/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 23:25:20 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[Atomreaktor]]></category>
		<category><![CDATA[Busted]]></category>
		<category><![CDATA[GC]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mythbuster]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=315</guid>
		<description><![CDATA[Konferencens sidste session for mit (Mikkel) vedkommende var: &#8220;The Garbage Collection Mythbusters&#8221;, fremført af selveste GC Group, så forventningerne var [...]]]></description>
			<content:encoded><![CDATA[<p>Konferencens sidste session for mit (Mikkel) vedkommende var: &#8220;The Garbage Collection Mythbusters&#8221;, fremført af selveste GC Group, så forventningerne var i top. <img src='http://java9.dev.nine.dk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Først og fremmest super lækkert at komme ind i et lokale hvor der er aircondition efter en tur i saunaen til &#8220;A brief introduction to Scala&#8221;.</p>
<p>Sessionen startede med en hurtig gennemgang af hvordan GC&#8217;en arbejder med at marker hvilke objekter der er live (Runtime stack refereret objekter).</p>
<p>Myter:</p>
<ul>
<li>Malloc/free performer bedre end GC &#8211; BUSTED</li>
<li>Reference counting vil løse alle GC problemer &#8211; BUSTED</li>
<li>GC med eksplicit deallokering vil øge hastigheden &#8211; BUSTED</li>
<li> Finalizers kan kaldes så snart et objekt ikke længere har flere referencer &#8211; BUSTED</li>
<li>GC eliminere alle memory leaks &#8211; BUSTED</li>
<li>GC sparer udviklingstid og <span style="text-decoration: line-through;">koster ikke noget</span> &#8211; DEL BUSTED</li>
<li>Osv.</li>
</ul>
<p><strong>Plus</strong></p>
<p>Meget god idé med at lave myth busting og 2 meget enegergeret speakers, der havde styr på deres GC, men de har jo også selv kodet den <img src='http://java9.dev.nine.dk/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> . Fint start med at gennemgå GC&#8217;s arbejdsmetoder så eventuelle uklarheder var på plads inden de gik i gang.</p>
<p>Og en lille kvik bemærkning fra de 2 speaker var: At man nok ikke skal kode et styresystem til en atomreaktor i Java.</p>
<p><strong>Minus</strong></p>
<p>Dog syntes jeg at de lige manglede at sprænge noget i luften for at være rigtige mythbusters.</p>
<p>Over and out fra San Francisco.</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/the-garbage-collection-mythbusters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Modular Applications with Apache Aries and OSGi</title>
		<link>http://java9.dev.nine.dk/2010/09/creating-modular-applications-with-apache-aries-and-osgi/</link>
		<comments>http://java9.dev.nine.dk/2010/09/creating-modular-applications-with-apache-aries-and-osgi/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 23:25:07 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache Felix]]></category>
		<category><![CDATA[Apahce Aries]]></category>
		<category><![CDATA[OSGi]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=318</guid>
		<description><![CDATA[Jeg (Nikolaj Brinch) havde (igen) valgt at høre om OSGi, nu med fokus på Apache Aries (http://incubator.apache.org/aries/).
Indlægget blev holdt af [...]]]></description>
			<content:encoded><![CDATA[<p>Jeg (Nikolaj Brinch) havde (igen) valgt at høre om OSGi, nu med fokus på Apache Aries (<a href="http://incubator.apache.org/aries/">http://incubator.apache.org/aries/</a>).</p>
<p>Indlægget blev holdt af Alasdair Nottingham fra IBM og Aries projektet (han er en af de originale proposal comitters).</p>
<p>Den bedste OSGi 101 jeg har set her på konferencen (jeg har set 2 andre). Ydermere kom han ind på at classloading i OSGi verdenen er MEGET hurtigere end standard Java SE, da den har global classloader, der skal søge alt igennem for at finde en klasse.</p>
<p>OSGi tilbyder &#8220;internals&#8221; packaging, således at man kan lave refaktorering uden at ødelægge API kompatibiltet.</p>
<p>OSGi Enterprise Specifikation (OSGi ES)</p>
<ul>
<li>Smelte Java EE og OSGi sammen (endeligt)
<ul>
<li>Web Apps &#8211; Servlets + OSGi</li>
<li>JPA</li>
</ul>
</li>
<li>A la carte model (du behøver ikke bruge det hele/du behøver ikke som OSGi implementor ikke implementere det hele).</li>
</ul>
<ul>
<li>Blueprint Container
<ul>
<li>Spring-derived component model</li>
</ul>
</li>
</ul>
<p>OSGi ES gør det meget nemmere for operators (drift) &#8211; det var lidt tyndt og måske bare en pointe han prøvede at presse igennem.</p>
<p>Demo!!! (baseret på eclipse og de gratis OSGi plugins fra IBM Rational ® &#8211; se eclipse marketplace).</p>
<p>Her lavede han fra bunden en Blog Web App &#8220;the OSGi way&#8221;, og forklarede undervejs- det gjorde han rigtig godt, med et JPA baseret bundle til håndtering af persistens (beware of persistence.xml &#8211; den skal man stadigvæk lave, men nu med sær OSGi syntaks).</p>
<p>Det der Blueprint Container halløj er virkelig super svedigt, og jeg tror at fremtiden for Java EE (og også lidt for Spring) ligger i det her OSGi giftemål. (Så kan det godt være at Rod Johnson og hans diciple har haft ret hele tiden med deres Spring DM Server, og de andre bare kan lære det). Det er møg nemt at lave services og bundles, og bruge dem fra andre med det har OSGi ES og Blueprints.</p>
<p>Apache Aries og OSGi runtimen var integreret i eclipse, så når han lavede ændringer, skulle han bare skrive update [n], så sørgede runtimen for at reloade bundles der var rettet osv. (mega hurtigt iøvrigt), super cool.</p>
<p>Jeg tror også at Grails m.fl. nede af vejen burde OSGi baseres (mindst som en option), så vil der nemlig være styr på dependency management, så dependency resolution (det som idag tager super lang tid), skal ske fordi man retter i et taglib.</p>
<p><strong>Plus:</strong> Virkelig god demo og forklaring som gjorde at man virkelig forstod det.</p>
<p><strong>Minus:</strong> Lamme spørgsmål fra en del deltagere, som helt have misforstået emnet.</p>
<p>Over and out JavaOne (review of conferrence to come later..)</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/creating-modular-applications-with-apache-aries-and-osgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Brief Introduction To Scala</title>
		<link>http://java9.dev.nine.dk/2010/09/a-brief-introduction-to-scala-2/</link>
		<comments>http://java9.dev.nine.dk/2010/09/a-brief-introduction-to-scala-2/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 22:31:04 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=297</guid>
		<description><![CDATA[Så måtte jeg (Søren) jo ind og se hesten, så meget tid har jeg ikke fået ofret på at sætte [...]]]></description>
			<content:encoded><![CDATA[<p>Så måtte jeg (Søren) jo ind og se hesten, så meget tid har jeg ikke fået ofret på at sætte mig ind i Scala, til at det ikke ville være en perfekt lejlighed til lige at høre noget mere om sproget de alle taler om.</p>
<p>Taleren havde ikke nogen speciel relation til dem der står bag Scala men er i bund og grund bare bruger af sproget og han ville så dele et oplæg som han har holdt en gang før i houston 2009.</p>
<p>På ægte funktionsprogrammeringslektor ørken facon, krydret med små forsigtige og mindst lige så tørre humoristiske udfald fik sessionens taler kørt os igennem basic scala</p>
<p>Det var sådan set fint, vi fik lige gennemgået de mest basale ting ved Scala såsom</p>
<ul>
<li>Funktionsprogrammerings koncepter i Scala</li>
<li>Immuterbar vs. Muterbare objekter.</li>
<li>Type hierarkiet</li>
<li>Actors</li>
<li>Tuples</li>
<li>og diverse småting.</li>
</ul>
<p>For mig var det en ganske fin indføring i sprogets basale kunnen, så alt i alt en god session.</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/a-brief-introduction-to-scala-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Functional Programming in Java: Lessons Learned by GridGain</title>
		<link>http://java9.dev.nine.dk/2010/09/functional-programming-in-java-lessons-learned-by-gridgain/</link>
		<comments>http://java9.dev.nine.dk/2010/09/functional-programming-in-java-lessons-learned-by-gridgain/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 21:59:50 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[Functional Programming]]></category>
		<category><![CDATA[Lessons Learned]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=293</guid>
		<description><![CDATA[Jeg (Nikolaj Brinch) havde her kl.14 valgt at hører lektioner som GridGain (Cloud firma) havde lært om Functional Programming in [...]]]></description>
			<content:encoded><![CDATA[<p>Jeg (Nikolaj Brinch) havde her kl.14 valgt at hører lektioner som GridGain (Cloud firma) havde lært om Functional Programming in Java (hvorfor er der iøvrigt ikke nogle Fortress indlæg her på JavaOne? &#8211; Det var jo åhh så hot på et tidspunkt &#8211; kan det være at det blive overflødiggjort af Erlang, Haskell og andre sprog, eller nogle af de glimrende implementationer af lignende sprog på JVM, f.eks. Scala. Ligesom lambda udtryk nu finder vej til selveste Java? Nå nok om Fortress det var vist et sidespring).</p>
<p>En tyk mand i grimt tøj skulle nu fortælle om hvad det var GridGain havde lært på den hårde måde&#8230; Han talte rigtig svært forståeligt engelsk (han er founderen af GridGain).</p>
<p>Faktisk kan man downloade GridGains eksempler (de har beholdt både de gamle og selvfølgelig de nye), så man kan sammenligne Java koden med Scala &#8211; super cool.</p>
<p>Den tykke mand vandrede hvileløst rundt på scenen, hvilket knirkede og larmede helt vildt &#8211; så stå dog stille mand! <img src='http://java9.dev.nine.dk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Han gennemgik i starten Functional Programming (FP) 101, hvilket han gjorde super godt &#8211; så alle kunne være med, og forskellene til Imperativ Programming (IP).</p>
<ul>
<li>Java + FP = Post Functional System
<ul>
<li>Java is imperative OO system</li>
<li>Jva + FP &#8211; Garbage = Scala</li>
</ul>
</li>
<li>Pure FP languages suck in object domain desing
<ul>
<li>OO is way better in describing our world</li>
</ul>
</li>
<li>FP excels at actual codeing of the algorithm</li>
</ul>
<ul>
<li>Post Functional &#8220;manifesto&#8221;
<ul>
<li>Use OO to build your classes</li>
<li>Use FP to implement their methods</li>
</ul>
</li>
</ul>
<p>Lesson: Du kan prøve et FP library, men du ender faktisk med at skrive mere kode (casts, annonyme inder klasser osv.), så stay away from lambdaj osv. Scala rules.</p>
<p>Brug type aliases (typedefs) så din kode biver kort og concise.</p>
<p>Så gik vi til kode eksempler som var Java??? Altså deres eget FP style library til Java. Vi blev så ved med at se eksempler på dette. Det var da interessant, men mange af tingene er jo vist 200 gange. Derefter blev det også noget rodet.</p>
<p>Immutability Actually Works &#8211; Brug det! CPU og hukommelses ineffektivitet er meget overdrevet.</p>
<p>De havde brugt predicates, således at de kunne lave et predicate som tog en node (i deres grid/cloud/cluster) og fandt ud af om f.eks. CPU forbruget var under 20%. Den kunne de så kalde en closure på som udførte en funktion på noden. Det er super smart da det så er dynamisk (og dynamiciteten ligger i FP), således at hver gang de kaldte denne function, ville den finde det subset af noder hvor predikatet var sandt, og sætte dem til at lave noget.</p>
<p>Han reklaremede for Tuples i Java, men det er bare så grimt. Jeg er ikke sikker på jeg er enig. Jeg har været nede af Pair, Tuple3, Tuple4 ruten (det han havde lavet var jo typestærke tupler). Tupler er i mine øjne Maps eller Object[], eller rigtige POJOs. Ellers er der noget mærkeligt ved ens program. Dette er selvfølgelig løst elegant i FP.</p>
<p>Så var der lige en til, nemlig at han var stor fortaler for checked exceptions (<a href="http://www.mindview.net/Etc/Discussions/CheckedExceptions">http://www.mindview.net/Etc/Discussions/CheckedExceptions</a>), men det virker som bekendt ikke i functional style Java.</p>
<p>Alt i alt var det faktisk temmelig interessant, men en noget rodet affære. De vil dog nu flytte til Scala 100% i fremtiden &#8211; og så er GridGain OSS til inspiration.</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/functional-programming-in-java-lessons-learned-by-gridgain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Brief Introduction to Scala</title>
		<link>http://java9.dev.nine.dk/2010/09/a-brief-introduction-to-scala/</link>
		<comments>http://java9.dev.nine.dk/2010/09/a-brief-introduction-to-scala/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 21:57:32 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=310</guid>
		<description><![CDATA[Scala er funktionel-objektsprog &#8211; og funktionelle metoder bruges af Google, og Google er $150 billioner værd, så FP må jo [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Scala er funktionel-objektsprog &#8211; og funktionelle metoder bruges af Google, og Google er $150 billioner værd, så FP må jo være godt? Ikke uden humor.</div>
<p>Han vil ikke have at det kaldes et &#8220;scripting language&#8221; &#8211; det undrer ham, for Scala er jo statisk typet.</p>
<p>Resten af gennemgangen var fin nok, men ALT for langsom, for tør, for kedelig. Han vidste hvad han lavede, men &#8230; ikke nok Jazz.</p>
<p><strong>Plus: </strong>Nu MÅ jeg tage mig sammen og prøve det i praksis.</p>
<p><strong>Minus: </strong>Dårlig taler. Simpelthen.</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/a-brief-introduction-to-scala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domain-Specific Language Versus Library API Shootout</title>
		<link>http://java9.dev.nine.dk/2010/09/domain-specific-language-versus-library-api-shootout/</link>
		<comments>http://java9.dev.nine.dk/2010/09/domain-specific-language-versus-library-api-shootout/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 21:53:03 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[XText]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=308</guid>
		<description><![CDATA[Næste punkt på min (Jespers) dagsorden var en duel imellem DSL&#8217;er og API&#8217;er, hvor en rimelig dynamisk duo udforskede forskellene [...]]]></description>
			<content:encoded><![CDATA[<p>Næste punkt på min (Jespers) dagsorden var en duel imellem DSL&#8217;er og API&#8217;er, hvor en rimelig dynamisk duo udforskede forskellene imellem at udstille sin funktionalitet som en (ekstern) DSL eller som en intern DSL (eller et egentlig API)</p>
<p>DSL&#8217;s kan jo også laves i XML, men det er nok ikke så brugervenligt.</p>
<p>Rich (DSL proponenten) viste nogle uddrag fra DSL&#8217;er og viste hvor skræmmende meget Java, der skulle til ellers. Så ville Jaroslav Tulach (API proponenten) træde til og forbedre det, sikre typecheck, fjerne gentagelser, etc.</p>
<p>Modsat viste &#8220;den anden gut&#8221; hvordan man med annotation processoren kan generere kode on the fly som sikrer en kompakt og typesikker måde at skrive sin Java kode på. Og det har han ret i.</p>
<p>Konklusionen: DSL&#8217;er er særligt vigtige når man skal adressere et andet publikum, med andre forudsætninger. Gode APIer og interne API har et andet publikum &#8211; udviklere.</p>
<p>De viste gode eksempler på versionering af DSL&#8217;er m.v.</p>
<p>Versionering af API&#8217;er blev derimod lidt mere langhåret &#8211; deprecated, selvfølgelig, men også @Transformation og @PatchByteCode &#8211; uha, uha.</p>
<p>Så er der IDE hjælp &#8211; Jaroslav fremhæver  at gode Java IDE&#8217;er kan alt det gode med annoteringer, etc.</p>
<p>DSL gutten fremhæver at IDE&#8217;erne også har gode sprog-toolinger &#8211; men de undlod elegant at fremhæve Eclipse&#8217;s XText. En spørger klarede dette.</p>
<p><strong>Plus:</strong> God diskussion.</p>
<p><strong>Minus:</strong> Manglende fokus på &#8220;fluent&#8221; interfaces, som jo også kommer tæt på.</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/domain-specific-language-versus-library-api-shootout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure Identity Propagation Across Tiers and Security Domains</title>
		<link>http://java9.dev.nine.dk/2010/09/secure-identity-propagation-across-tiers-and-security-domains/</link>
		<comments>http://java9.dev.nine.dk/2010/09/secure-identity-propagation-across-tiers-and-security-domains/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 21:50:43 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[Fine Grained Entitlements]]></category>
		<category><![CDATA[Oracle Access Manager]]></category>
		<category><![CDATA[Oracle Adaptive Access Manager]]></category>
		<category><![CDATA[Oracle Authentication Services for Operating Systems]]></category>
		<category><![CDATA[Oracle Directory Server Enterprise Edition]]></category>
		<category><![CDATA[Oracle Enterprise Single Sign-On Suite Plus]]></category>
		<category><![CDATA[Oracle Entitlements Server]]></category>
		<category><![CDATA[Oracle Identity Analytics]]></category>
		<category><![CDATA[Oracle Identity Federation]]></category>
		<category><![CDATA[Oracle Identity Management Solutions]]></category>
		<category><![CDATA[Oracle Identity Manager]]></category>
		<category><![CDATA[Oracle Information Rights Management]]></category>
		<category><![CDATA[Oracle Internet Directory]]></category>
		<category><![CDATA[Oracle OpenSSO]]></category>
		<category><![CDATA[Oracle Role Manager]]></category>
		<category><![CDATA[Oracle Security Developer Tools]]></category>
		<category><![CDATA[Oracle Virtual Directory]]></category>
		<category><![CDATA[Oracle Web Services Manager]]></category>
		<category><![CDATA[salgsgas]]></category>
		<category><![CDATA[Single Sign-On and Web Access Control]]></category>
		<category><![CDATA[spild af tid]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=304</guid>
		<description><![CDATA[Jeg (Jesper) havde ikke gjort mit hjemmearbejde og valgt et indlæg af en Oracle Product Manager. Av!
Manden mente at det [...]]]></description>
			<content:encoded><![CDATA[<p>Jeg (Jesper) havde ikke gjort mit hjemmearbejde og valgt et indlæg af en Oracle Product Manager. Av!</p>
<p>Manden mente at det var en super idé at externalisere så meget sikkerhed som muligt fra applikationerne. Set ud fra enterprise-apps og konsolidering giver det vel meget god mening, men budskabet ligger skræmmende tæt op af at at tro man kan klistre sikkerhed på bagefter. Er det nu en god idé?</p>
<div>Han opdeler identity og federation i enterprise-centrisk:</div>
<div>
<ul>
<li>SAML</li>
<li>XACML</li>
</ul>
</div>
<div id="_mcePaste">og bruger-centrisk:</div>
<div id="_mcePaste">
<ul>
<li>OpenID</li>
<li>OAuth</li>
</ul>
</div>
<p>I praksis var hele hans tale ret enterpriseorienteret. Han benyttede straks lejligheden til at så tvivl om sikkerheden i OAuth og OpenID.</p>
<div id="_mcePaste">Højdepunkter: Han viste en SAML assertion i en SOAP header &#8211; i en PowerPoint.</div>
<p>Det var på det tidspunkt jeg var vis om at jeg IKKE var det rigtige publikum her? SAML i WebServices, STS, etc. er bare ikke nyt.</p>
<p>Lidt efter lidt blev det klart hvorfor han mente at man skulle klistre sikkerheden på: Det viser sig at Oracle har et produkt hvor man kan sætte sikkerthedsagenter op rundt omkring som kan klistre sikkerheden på bagefter! Sikke. En. Overraskelse.</p>
<div id="_mcePaste">Han viste nogle mere og mere komplicerede scenarier hvor man kan kalde på kryds og tværs, og have finkornet adgangs kontrol, ligesom der kan indlejres SAML assertions i BPEL flows og stads.  Og, surprise: Oracle har også sådan en fætter! Er. De. Ikke. Vildt?</div>
<p><strong>Plus:</strong> Han talte OK engelsk. Sortof.</p>
<p><strong>Minus:</strong> Salgsgas, salgsgas. Min fejl at tilføje sessionen ud fra titlen alene. Jeg vil dog mene at man (i et alternativt univers?) kunne have haft et spændende indlæg med den titel.</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/secure-identity-propagation-across-tiers-and-security-domains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Effective XML: Leveraging JAXB and SDO</title>
		<link>http://java9.dev.nine.dk/2010/09/effective-xml-leveraging-jaxb-and-sdo/</link>
		<comments>http://java9.dev.nine.dk/2010/09/effective-xml-leveraging-jaxb-and-sdo/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 21:25:13 +0000</pubDate>
		<dc:creator>blogger</dc:creator>
				<category><![CDATA[Nyheder]]></category>
		<category><![CDATA[jaxb]]></category>
		<category><![CDATA[sdo]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://java9.dev.nine.dk/?p=301</guid>
		<description><![CDATA[Jeg (Jesper) fulgte op på min XML dødsdrift med en session om JAXB og SDO, som på mange måde er [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Jeg (Jesper) fulgte op på min XML dødsdrift med en session om JAXB og SDO, som på mange måde er sammenlignelige:</div>
<div>Oprindelse og anvendelse:</div>
<div>
<ul>
<li>JAXB er spec + referenceimpl med input fra XmlBeans, EMF, TopLink, etc.</li>
<li>SDO kommer fra IBM og BEA</li>
<li>XML &#8220;behandling&#8221; skal kunne spille sammen med en lang række teknologier: JPA, JAX-WS, JAX-RS, SCA</li>
<li>JAXB 2.0 dækker HELE schema, det var en fejl af 1.0 ikke gjorde</li>
<li>SDO er &#8220;løsere&#8221; og har en &#8220;map-agtig&#8221; datamodel.</li>
</ul>
</div>
<div id="_mcePaste">De kan også bruges til lidt forskellige ting:</div>
<div>
<ul>
<li>SDO har metadata i sig, JXB bruger Java reflection.</li>
<li>SDO har en &#8220;open&#8221; måde at arbejde på hvor man kan bøje schemaet hvis man har dele som ikke bruger helt samme schema.</li>
<li>SDO har også change tracking, som kan bruges til at sende optimale ændringer</li>
</ul>
</div>
<div id="_mcePaste">På køretidspunktet er der lidt flere forskelle:</div>
<div>
<ul>
<li>JAXB runtim er ret kortfattet. JAXB har infoset preservation! Det vidste jeg ikke!</li>
<li>SDO runtimes er ikke helt så udskiftelige.</li>
</ul>
</div>
<div id="_mcePaste">Scenarier:</div>
<div id="_mcePaste">
<ul>
<li>Data Access Service: Brug én klasse til at mappe til både JPA og XML.</li>
<li>Det er IKKE painless: Entitieter er bare ikke dokumenter, og omvendt</li>
</ul>
</div>
<p>Der er under Eclipselink hatten både en JAXB runtime med udvidelser (Moxy) og en SDO runtime.</p>
<p><strong>Plus:</strong> Dygtig mand, der forklarer ud fra den teknologi, han selv har bygget.</p>
<p><strong>Minus:</strong> Når alt hvad man har er en hammer&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://java9.dev.nine.dk/2010/09/effective-xml-leveraging-jaxb-and-sdo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

