Uploaded on

A presentation (in Swedish) about the future of Java, after Oracle´s acquisition of SUN.

A presentation (in Swedish) about the future of Java, after Oracle´s acquisition of SUN.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,999
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Framtiden för JavaMerdata – 11 Mar 2010
    Jens Riboe
    jens.riboe@ribomation.com
    11 Mars 2010
  • 2. Jens RiboeRibomation
    För diverse kunder
    KTH
    Ribomation
    ERA
    London
    Goyada
    Wily (San Francisco)
    VzB
    OW
    RM
    SICS
    1990
    1995
    2000
    2005
    2010
  • 3. Problem/Prestanda analys
  • 4. Agenda
    Varför
    Vad
    Hur
    Vart
    Vem
    Vilka
    Oracle´s förvärv av SUN
    Java editioner och deras framtid
    Java 7
    JVM Språk
    Groovy
    Spara frågorna tills efter presentationen
  • 5. Oracle´s förvärv av SUN
    http://blogs.sun.com/jag/entry/so_long_old_friend
  • 6. Varför köpte de SUN?
    Fler frågor än svar – än så länge
    Några teorier
    Sätta stopp för MySQL
    Utmana IBM på riktigt
    SUN Servers med Oracle DB
    Kontrollera utvecklingen av Java
    Införa kommersiella versioner
    Oron i Java lägret är mindre, nu ett år efteråt
  • 7. Oracle samlar på appsrvs
    GlassFish
    Från köpet av SUN (2009)
    Osäker framtid tillmötes
    Weblogic
    Från köpet av BEA (2007)
    Oracle´s primära val
    Orion
    Från köpet av svenska IronFlare (2004?)
    Kommer att försvinna helt
    Eget hack (kod från bl.a. JOnAS)
    Från millennieskiftet till förvärvet av Orion
    Finns inte längre
  • 8. Oracle Java
    Annonserad sammanslagning av
    SUN JVM
    BEA JRockit
  • 9. Java SE
    Java EE
    Android
    Java Editioner
  • 10. Java i mobilen
    På stark frammarsch
    Bygger på Dalvik JVM
    Backas upp av Google och ett flertal mobiltillverkare
  • 11. Java på servern
    Java EE kommer att vidareutvecklas
    EJB 3
    Bygger på Hibernate
    Spring Framework
    Tänkbar sammanslagning av JEE och Spring
    JINI & JavaSpaces
    Vem har hört talas om det?
  • 12. Java på skrivbordet
    Java Swing
    Stendött
    EclipseSWT/JFace/RCP
    Nisch
    Java WebStart
    Distributionsteknik för Java klienter
    Går samma öde tillmötes som Swing/SWT
    Java Applet
    Bara för de närmast sörjande
    Java FX
    Ett ambitiöst försök att slå Adobe FLEX och MS SilverLight
    Lär floppa såsom Swing
  • 13. Java 7
  • 14. New features – Which features?
    Closures
    NO, YES, NO, YES, NO, YES, NO, . . .
    Modules
    Super package, projectjigsaw
    Better Dates
    Instant, Duration, LocalDate
    LocalDate date = LocalDate.of(2010, MonthOfYear.FEBRUARY, 26);
    LocalDateeoMonth= date.with(DateAdjusters.lastDayOfMonth());
    LocalDatenextTue = date.with(DateAdjusters.next(DayOfWeek.TUESDAY));
    jmf) http://lib.ribomation.com/doc/DateCalc/usage.html
  • 15. Collection literals
    Inspirerad av Groovy m.fl.
    List<String> list = ["item"];
    String item = list[0];
    Set<String> set = {"item"};
    Map<String, Integer> map = {"key" : 1};
    intvalue = map["key"];
  • 16. Smått & gott
    Binaryliterals
    intbinary = 0b1001_1001;
    Underscores in intliterals
    intone_million = 1_000_000;
    Strings in switch
    Diamond operator <>
    Map<String, List<String>> m = new HashMap<>();
    Closable
    try (
    BufferedReaderbr = new BufferedReader( new FileReader(path) )
    )
    {
    return br.readLine();
    }
  • 17. JVM språk
  • 18. Produktivitetsförbättring
    Development speed matters
    Tid för att bygga webappmed ´feature X´
    Fem år tigare: 1-2 månader
    Idag: 1-2 dagar
  • 19. Plattformförmerän Java
    Nya språk ovanpå eller bredvid Java
    Använder JVM:en som exekveringsmaskin
    På sikt tonar Java bort såsom C gjorde när C++ kom
  • 20. Scala
    Martin Odersky
    École Polytechnique Fédérale de Lausanne (EPFL)
    2004
    Multi-paradigm
    Object-Oriented programming
    Java + Mixin och Traits
    Functional programming
    Closures och Pattern Matching
    Static typing
    Kompilatorn hittar många fel
    Extendible
    Lätt att skapa DSL
  • 21. JRuby och Jython
    Många scriptspråk finns porterade till JVM:en
    JRuby är en portering av Ruby
    Jython är en portering av Python
    Ruby on Rails webbramverket var trigger
    Skapade stort intresse för
    Rails som ramverk
    Ruby som språk
  • 22. ClojureochJaskel
    Renodlade funktionella språk på JVM:en
    Clojure är en LISP variant
    Jaskel är en portering av Haskel
  • 23. Groovy
    James Strachan
    2003
    http://radio.weblogs.com/0112098/2003/08/29.html
    Inspireradav Ruby och Python
    Den 'naturliga' vidareutvecklingenav Java
    Superset av Java
    Såsom C övergicki C++
    Egenskaper
    Dynamiskt (duck typing)
    Objektorienterat (classes)
    Funktionellt (closures)
  • 24. Bättre än Java
    Betydligt mindre text att skriva
    Duck typing
    Trevliga nya operatorer
    Closures
    Groovy beans
    Groovy string
    Regex
    Categories
    Operator overloading
    Builders
    Nya libs och tools kommer hela tiden
  • 25. Ducktyping
    ”Ifit walks like a duck and it quacks like a duck, then it probably is as a duck”
    Metodanrop på objekt utan krav på viss typ
    def min(a, b) { a <= b ? a : b }
    defaNumber = 17
    println "number: " + min(aNumber - 3, aNumber + 3)
    defaString = 'foobar'
    println "string: " + min('xx' + aString, 'aa' + aString)
    defaDate = new Date()
    println "date: " + min(aDate - 1, aDate + 1)
    number: 14
    string: aafoobar
    date: Fri Sep 04 11:20:17 CEST 2009
  • 26. Elvis operator ?:
    I stället för
    String h = System.getProperties.getProperty("user.home");
    dir = (home != null ? home : "/tmp");
    räcker det med
    dir = System.properties.'user.home' ?: '/tmp'
    println '-' * 20
    println "A) ${System.properties.'user.home' ?: '/tmp'}"
    println "B) ${System.properties.'user-home' ?: '/tmp'}"
    --------------------
    A) C:Usersjens
    B) /tmp
  • 27. Spread operator *.
    I stället för
    List<String> txt = new ArrayList<String>();
    for (Todo t : todos) {
    txt.add(t.getText());
    }
    System.out.println("txt = " + txt);
    räcker det med
    deftxt = todos*.text
    printlntxt
  • 28. Closures
    Anonyma funktions block
    def nums = (1..10)
    printlnnums
    printlnnums.collect {it * it}
    printlnnums.findAll {n -> n % 2}
    printlnnums.inject(0) {sum, n -> sum + n}
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    [1, 3, 5, 7, 9]
    55
  • 29. Categories
    Ett sätt att temporärt addera metoder till en klass
    def today = new Date()
    println "Today: ${today}"
    println "Today: ${today.iso8601()}"
    Today: Sat Sep 05 14:19:13 CEST 2009
    …MissingMethodException: No signature of method: java.util.Date.iso8601()…
    import java.text.SimpleDateFormat
    classFmtBoost {
    static String iso8601(Date self) {
    new SimpleDateFormat('yyyy-MM-dd').format(self)
    }
    static String getTraditional(Date self) {
    new SimpleDateFormat('d MMM yyyy').format(self)
    }
    }
    def today = new Date()
    use (FmtBoost) {
    println "Today: ${today.iso8601()}"
    println "Today: ${today.traditional}"
    }
    Today: 2009-09-05
    Today: 5 sep 2009
  • 30. Processa XML
    def news(url, phrase) {
    def items = new XmlParser().parse(url).channel.item
    if (phrase) {
    items = items.grep { it.title.text().contains(phrase) }
    }
    items.collect {n -> [
    title: n.title.text() - " ",
    date: n.pubDate.text(), url: n.link.text(),
    text: n.description.text()
    ]}
    }
    <?xml version="1.0" ?>
    <rss>
    <channel>
    <title>Yahoo! News</title>
    <item>
    <title>Foxaddson-airtweets to ...</title>
    <link>http://...</link>
    <pubDate>Fri, 04 Sep 2009 02:54:51 GMT</pubDate>
    <description>Summerreruns are ...</description>
    </item>
    <item>...</item>
    <item>...</item>
    </channel>
    </rss>
  • 31. Result av news(url, phrase)
    def lst = news('http://rss.news.yahoo.com/rss/tech', 'Google')
    lst.each {
    it.text = it.text.replaceAll('<br clear="all"/>', '')
    it.text = it.text.replaceAll(/(<p>)|(</p>)/, '')
    it.text = it.text.replaceAll(/<a href.+</a>/, '')
    }
    lst.each {
    println "** ${it.text.substring(0,60)} ${it.date}"
    }
    ** AP - The executive who led Google Inc.'s expansion in China
    Fri, 04 Sep 2009 06:25:08 GMT
    ** AP - The final assault on a class-action settlement that wou
    Thu, 03 Sep 2009 23:30:27 GMT
  • 32. Sammanfattning
  • 33. Javas framtid
    Framtiden för Java är inte vad den har varit
    Oracle
    SUN JVM & JRockit
    Java 7
    Sep 2010 ???
    Features ???
    JVM språk
    Groovy is the future !!!
  • 34. Frågor
    Jens Riboe
    +46 (0)730-314040
    jens.riboe@ribomation.com
    www.ribomation.com
    blog.ribomation.com