SlideShare a Scribd company logo
1 of 37
Java 7 – State of the Enterprise
    Challenges, Adoption Path and Reasons to move forward …




1                      Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Disclaimer




     The thoughts expressed here are
     the personal opinions of the author
     and no official statement
     of the msg systems ag.




2                   Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Overview



         1.    Introduction
         2.    Reasons: Why Migrate?
         3.    Migration Procedures
         4.    Challenges
         5.    Adoption Paths
         6.    Restrictions
         7.    Real World Answers




3                                Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
http://blog.eisele.net
http://twitter.com/myfear
markus@eisele.net
msg systems ag



                                msg netzwerkservice     PREVO-System AG         finnova AG Bankware        m3 management consulting GmbH
                                GmbH



    1980      1990     1995   1996     1997           1998      2000       2006        2008        2009          2010

       Foundation of                        GILLARDON financial     Regional company        msg global                msg services ag
       msg systems                          software AG (now        in the USA              solutions ag
                                            msgGillardon AG)
                                                                                            COR AG
                                                                                            (now COR&FJA AG)

                                                                                            msg systems
                                                                                            Romania S.R.L.


      Industries:
      • Insurance
      • Financial Services
      • Automotive                                           Individual Solutions:
      • Communications                                       • Allianz | AUDI | BG-PHOENICS | BMW
      • Travel & Logistics                                       Financial Services | BMW Group | Daimler |
      • Utilities                                                DER Deutsches Reisebüro |
                                                                 Deutsche Bank | Deutsche Post | Sächsischer
      • Life Science & Healthcare
                                                                 Landtag | Versicherungskammer Bayern | VR
      • Government                                               Leasing



5                                       Markus Eisele, Oracle ACE Director FMW & SOA                                      msg systems ag, 2011
Java 7 Release Contents




                                  • Java Language
                                     • Project Coin (JSR-334)
                                  • Class Libraries
                                     • NIO2 (JSR-203)
                                     • Fork-Join framework,
                                        ParallelArray (JSR-166y)
                                  • Java Virtual Machine
                                     • The DaVinci Machine project
                                        (JSR-292)
                                     • InvokeDynamic bytecode
                                   • Miscellaneous things


6                             Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Why Upgrade? – new Features!



         Features of Java SE 7

         • Improved performance, stability
           and security.
         • Enhancements in the Java Plug-
           in for Rich Internet Applications
           development and deployment.
         • Java Programming language
           enhancements that enable
           developers with ease of writing
           and optimizing the Java code.
         • Enhancements in the Java
           Virtual machine to support Non-
           Java languages.

         http://www.slideshare.net/myfear/introducing-java-7

7                                         Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Why Upgrade? – Old Stuff is getting EOL‘ed!

         Java SE Support Roadmap


         Release                            EOL
                          GA Date                                EOL                     Support Period
         Family                             Notification

         1.4              Feb 2002          Dec 2006             Oct 2008                6 ½ years
         5.0              May 2004          Apr 2008             Oct 2009                5 ½ years
         6                Dec 2006          Feb 2011             Jul 2012                5 1/2 years



         Example Java for Business Support Roadmap

                                           EOL
         Release                           Notification          Premier                 Extended         Sustaining
                          GA Date
         Family                                                  Support until           Support until    Period

         1.4              Feb 2002         Apr 2008              Feb 2010                Feb 2013         Indefinite
         5.0              May 2004         Jun 2009              May 2011                May 2014         Indefinite
         6                Dec 2006         Jan 2011              Dec 2013                Dec 2016         Indefinite


          http://www.oracle.com/technetwork/java/javase/eol-135779.html


8                                         Markus Eisele, Oracle ACE Director FMW & SOA                             msg systems ag, 2011
Why Upgrade? – It‘s a hype!




           Java 7 Support Slated for JetBrains IDE
           PCWorld - Feb 23 2011
           Updated Oracle NetBeans IDE offers Java 7
           Computerworld - Apr 20 2011
           Oracle releases Java 7 Standard Edition
           Inquirer - Jul 29 2011
           Eclipse Announces Full Support for Java 7
           San Francisco Chronicle - Sep 29 2011



9                                           Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
GitHub and Stack Overflow




            http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/

10                                       Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Java Version Market Share – on Jelastic




        http://blog.jelastic.com/2012/02/06/java-version-market-share-january-2012/

11                                           Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Enterprise principles




          But: Enterprises think different:
                Maximize Benefit to the Enterprise
                Business Continuity
                Common Use Applications
                Requirements-Based Change
                Responsive Change Management
                Control Technical Diversity
                Interoperability


12                           Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Have You Adopted Java 7 Yet?




             http://java.dzone.com/polls/have-you-adopted-java-7-yet

13                                              Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Migration Procedure – General Approach




                                                  Tests



14                              Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Migration Procedure – Check & Change

       •       Pre-Flight Check
                    Development Configuration
                          Does your IDE support your version?
                          What about your build tool?
                          Your quality checkers?
                          Your ALM solutions?
                    Project Dependencies (OSS & Commercial)
                        Do your libraries run on/support new version?
                    Your Company Specific Frameworks
                        They are out there. Check them!
                    Deprecated Features
                        Do you use anything that has been deprecated?
                        Your chance to refactor a bit!
                    Incompabilities
                        http://www.oracle.com/technetwork/java/javase/compatibility-
                         417013.html#incompatibilities


       •       Change if necessary
                    Control what you do!
                    Make a list and track it!
                    Other Projects may need it to estimate efforts!

           http://download.oracle.com/javase/7/docs/webnotes/adoptionGuide/index.html

15                                                Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Migration Procedure – Build & Package


      • Check your build
           Change JRE/JDK libraries
           Change source version level for maven
           Check special ANT tasks (ftp..)


      • Change if necessary
           All of the above

           Also a very good time to :
                change build tools
                Get rid of old and unused stuff
                Clean old mess


      • Test-drive your “updated” build process carefully.



16                                 Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Migration Procedure – Deployment


      •   Using Java 7 on the Client is no save solution at
          the moment!
      •   http://www.java.com/ still distributes Java 1.6_30 to
          the public.


      •   If you chose to change your deployments there are
          some chances to improve it:
            Change your Applets to use the Deployment Toolkit
             (codebase)
            Utilize the new “resource per OS” feature
            Think about partly signing your JNLP files
            Some small enhancements to Applet loading (single
             network requests)




17                                Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Migration Procedure – Tests


      • Excurse: If your tests randomly fail with Java 7

      • JUnit uses Class.getMethods() to find all tests
        in a class
           This list is not explicitly sorted in any order!
           Until Java 6 the methods were returned in same
            order as declared in source file! This changed with
            Java 7.


      • Repair your tests to not rely on execution
        order of @Test methods!

      • Test. Test. Test.
18                                 Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Migration Procedure – Update Documentation


      •   Why are developers adverse to documenting software
          systems they’ve worked on?
            Code should be the documentation
            The act of solving a problem is more exciting than writing
             about it
            We are lazy.
            The minute you write a doc it is out of date
            Nobody is ever going to read it
            It seemed impossible to organize documentation usefully
            ….

      •   Chances are:
            Write a “Update your environment to Java 7” checklist for your
             team-members
            Write a “How expensive it really is to migrate to Java 7” blog
             post
            Have a good idea about what to bill the customer for




19                                  Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Challenges

      •   From a desktop perspective Java 7 is still considered “for
          developers“ only.
            You still can’t download it from java.com
            And your Java 6 will never ask you for an update.


      •   Some trust is lost
            The Java 7.0 release had some ugly bugs around
             http://blog.eisele.net/2011/07/dont-use-java-7-are-you-kidding-me.html
            We have Java 7u1 out since 19/10/11 which solved them


      •   Not all commercial products ready until today:
              WebSphere Application Server V8


      •   But: Adoption of Java SE 7 is rising:
              WebLogic 12c




20                                    Markus Eisele, Oracle ACE Director FMW & SOA    msg systems ag, 2011
SE 6 still not broadly adopted




21                                    Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 26/06/11
Decision making as of today.


                                                                       Your new
                                                                    project in 2011




                                                           no                            yes

                                                                     Going live before
                                                                      Q1-Q2/2012?
                                        yes                        no
                                                      All
                                              tools/environments
                                                  supported?                                   SE 6


                        yes                           no

                                Desktop
                              Development?
                                                                               SE 7
     SE 7 rolled-out?             yes


                                                           no



22                                        Markus Eisele, Oracle ACE Director FMW & SOA                msg systems ag, 2011
What to expect if you decide to travel?




23                                 Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 26/06/11
Coin – Underscores in Numeric Literals




       private static final int default_kostenart = 215879;
       private static final int ZZ_BUFFERSIZE = 16384;




24                               Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Coin - String Switch Statement



             // …
             if (o1.getVehicleFeatureDO().getFeatureType().equals(
                      "PAINTWORK")
                      ||
     o1.getVehicleFeatureDO().getFeatureType().equals(
                      "UPHOLSTERY")) {
                  return -1;
             } else if
     (o1.getVehicleFeatureDO().getFeatureType().equals("OPTION")) {
                  return 1;
             }
             //…




25                                Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Coin - String Switch Statement




      String s = o1.getVehicleFeatureDO().getFeatureType();
      switch (s) {
          case "PAINTWORK": case "UPHOLSTERY"
          return -1;
          case "OPTION"
          return 1;
      }




26                                Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Coin – Diamond Operator



       final List<SelectItem> items = new ArrayList<SelectItem>();

       Collection<KalkFLAufwandsverlaufBE> saveVerlauf = new
       ArrayList<KalkFLAufwandsverlaufBE>();

       final List<ErrorRec> errorRecList = new ArrayList<ErrorRec>();

       List<ProjektDO> resultList = new ArrayList<ProjektDO>();

       Map<String, String> retVal = new HashMap<String, String>();




27                             Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Coin – Diamond Operator




        final List<SelectItem> items = new ArrayList<>();

        Collection<KalkFLAufwandsverlaufBE> saveVerlauf = new
        ArrayList<>();

        final List<ErrorRec> errorRecList = new ArrayList<>();

        List<ProjektDO> resultList = new ArrayList<>();

        Map<String, String> retVal = new HashMap<>();




28                             Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Coin – Automatic Resource Management

       public DateiAnhangDO setDateiContent(DateiAnhangDO dateiAnhang, InputStream
       dateiInhalt) throws ValidationException {
               OutputStream out = null;
               try {
                   File f = new File(dateiAnhang.getDateiNameSystem());
                   out = new FileOutputStream(f);
                   byte[] buf = new byte[1024];
                   int len;
                   while ((len = dateiInhalt.read(buf)) > 0) {
                       out.write(buf, 0, len);
                   }
               } catch (IOException e) {
                    // Error management skipped
                   throw AppExFactory.validation(CLAZZ, true, errorRecList);
               } finally {
                   try {
                       out.close();
                   } catch (IOException e) {
                   // Error management skipped
                       throw AppExFactory.validation(CLAZZ, true, errorRecList);
                   }
                   try {
                       dateiInhalt.close();
                   } catch (IOException e) {
                    // Error management skipped
                       throw AppExFactory.validation(CLAZZ, true, errorRecList);
                   }
               }
               return dateiAnhang;
           }

29                                  Markus Eisele, Oracle ACE Director FMW & SOA     msg systems ag, 2011
Coin – Automatic Resource Management



      public void setDateiContent(String dateiAnhang, InputStream dateiInhalt) throws
      ValidationException {
              try (InputStream in = dateiInhalt; OutputStream out = new
      FileOutputStream(new File(dateiAnhang))) {
                  byte[] buf = new byte[1024];
                  int len;
                  while ((len = in.read(buf)) > 0) {
                      out.write(buf, 0, len);
                  }
              } catch (IOException e) {
                  // Error management details skipped
                  throw AppExFactory.validation(CLAZZ, true, errorRecList);
              }
              return dateiAnhang;
          }




30                                 Markus Eisele, Oracle ACE Director FMW & SOA         msg systems ag, 2011
Coin - Multi Catch




     try {
                 final Method method = cls.getMethod("getDefault", new Class[0]);
                 final Object obj = method.invoke(cls, new Object[0]);
                 return (Enum) obj;
             } catch (NoSuchMethodException nsmex) {
                 throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault method
     not found", nsmex);
             } catch (IllegalAccessException iae) {
                 throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault method
     not accessible", iae);
             } catch (InvocationTargetException ite) {
                 throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault method
     invocation exception", ite);
             }




31                                 Markus Eisele, Oracle ACE Director FMW & SOA      msg systems ag, 2011
Coin - Multi Catch



        try {
              final Method method = cls.getMethod("getDefault", new Class[0]);
              final Object obj = method.invoke(cls, new Object[0]);
              return (Enum) obj;
             } catch (NoSuchMethodException | IllegalAccessException |
        IllegalArgumentException| InvocationTargetException nsmex) {
                        throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault
        method not found", nsmex);
                }




32                                 Markus Eisele, Oracle ACE Director FMW & SOA      msg systems ag, 2011
NIO.2

       public boolean createZIPFile(String workDir, String zipFileName, ZipOutputStream out,
           String subdir) {
         boolean zipOk = false;
         String outFilename = zipFileName;
         FileInputStream in = null;
         boolean closeZip = true;
         String nfilen = "";
         try {
           if (out == null) {
             out = new ZipOutputStream(new FileOutputStream(outFilename));
           } else {
             closeZip = false;
           }
           if (subdir != null) {
             workDir = workDir + "/" + subdir;
           }

                // Compress the files
                File srcDir = new File(workDir);
                File[] files = srcDir.listFiles();
                byte[] buf = new byte[1024];
                for (int i = 0; i < files.length; i++) {
                  if (zipFileName.equals(files[i].getName())) {
                    continue;
                  }
                  if (files[i].isDirectory()) {
                    createZIPFile(workDir, zipFileName, out, files[i].getName());                  Recursive ZIP File Handling
                    continue;
                  }
                  in = new FileInputStream(files[i]);                                              - ZipOutputStream
                    // Add ZIP entry to output stream.
                    nfilen = files[i].getName();                                                   - ZipEntry
                    if (subdir != null) {
                      nfilen = subdir + "/" + nfilen;
                    }
                    out.putNextEntry(new ZipEntry(nfilen));

                    // Transfer bytes from the file to the ZIP file
                    int len;
                    while ((len = in.read(buf)) > 0) {
                      out.write(buf, 0, len);
                    }

                    // Complete the entry
                    out.closeEntry();
                    in.close();
                    zipOk = true;
                }

            // Complete the ZIP file
          } catch (FileNotFoundException e) {
       //skipped

          } catch (IOException e) {
       //skipped

          } finally {
            try {
              if (in != null) {
                in.close();
              }
            } catch (IOException e) {

                                                                                                   Error Handling (condensed )
       //skipped
            }

            try {
              if (closeZip && out != null) {
                out.close();
              }
            } catch (IOException e) {
       //skipped
            }

            }

            return (zipOk);
        }




33                                                                                             Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
NIO.2 – (ZIP)FileSystem, ARM, FileCopy, WalkTree
          public static void create(String zipFilename, String... filenames)
              throws IOException {

              try (FileSystem zipFileSystem = createZipFileSystem(zipFilename, true)) {
                final Path root = zipFileSystem.getPath("/");

                  //iterate over the files we need to add
                  for (String filename : filenames) {
                    final Path src = Paths.get(filename);

                      //add a file to the zip file system
                      if(!Files.isDirectory(src)){                                                private static FileSystem createZipFileSystem(String
                        final Path dest = zipFileSystem.getPath(root.toString(),
                                                                src.toString());                  zipFilename, boolean create)   throws IOException {
                        final Path parent = dest.getParent();                                       // convert the filename to a URI
                        if(Files.notExists(parent)){
                          System.out.printf("Creating directory %sn", parent);                     final Path path = Paths.get(zipFilename);
                          Files.createDirectories(parent);                                          final URI uri = URI.create("jar:file:" +
                        }
                        Files.copy(src, dest, StandardCopyOption.REPLACE_EXISTING);
                                                                                                  path.toUri().getPath());
                      }
                      else{                                                                           final Map<String, String> env = new HashMap<>();
                        //for directories, walk the file tree
                        Files.walkFileTree(src, new SimpleFileVisitor<Path>(){                        if (create) {
                          @Override                                                                     env.put("create", "true");
                          public FileVisitResult visitFile(Path file,
                              BasicFileAttributes attrs) throws IOException {
                                                                                                      }
                            final Path dest = zipFileSystem.getPath(root.toString(),                  return FileSystems.newFileSystem(uri, env);
                                                                    file.toString());             }
                            Files.copy(file, dest, StandardCopyOption.REPLACE_EXISTING);
                            return FileVisitResult.CONTINUE;
                          }

                            @Override
                            public FileVisitResult preVisitDirectory(Path dir,
                                BasicFileAttributes attrs) throws IOException {
                              final Path dirToCreate = zipFileSystem.getPath(root.toString(),
                                                                             dir.toString());
                              if(Files.notExists(dirToCreate)){
                                System.out.printf("Creating directory %sn", dirToCreate);
                                Files.createDirectories(dirToCreate);
                              }
                              return FileVisitResult.CONTINUE;
                            }
                          });
                      }
                  }
              }
          }




34                                                               Markus Eisele, Oracle ACE Director FMW & SOA                             msg systems ag, 2011
Sumary



         •    Nice, new features
         •    Moving old stuff to new stuff isn’t an automatism

         •    Most relevant ones:
                  Multi-Catch probably the most used one
                  Diamond Operator


         •    Maybe relevant:
                  NIO.2
                  Fork/Join


         •    Not relevant: (at least to the projects I looked at!)
                  Better integer literals
                  String in switch case
                  Varargs Warnings
                  InvokeDynamik




35                                       Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Lesson in a tweet




      “The best thing about a boolean is
      even if you are wrong,
      you are only off by a bit.”
      (Anonymous)




      http://www.devtopics.com/101-great-computer-programming-quotes/


36                                             Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011
Thank you for your attention




     Markus Eisele

     Principal IT Architect

     Phone: +49 89 96101-0
     markus.eisele@msg-systems.com


     www.msg-systems.com




                                   www.msg-systems.com




37                            Markus Eisele, Oracle ACE Director FMW & SOA   msg systems ag, 2011

More Related Content

What's hot

GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011Arun Gupta
 
Oracle technology day 19.5.2010. best practices for upgrade to 11g r2
Oracle technology day   19.5.2010. best practices for upgrade to 11g r2Oracle technology day   19.5.2010. best practices for upgrade to 11g r2
Oracle technology day 19.5.2010. best practices for upgrade to 11g r2Oracle Hrvatska
 
Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...
Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...
Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...InSync2011
 
Mysql overview_20100811
Mysql overview_20100811Mysql overview_20100811
Mysql overview_20100811thinkinlamp
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Vinay H G
 
Playing in the Same Sandbox: MySQL and Oracle
Playing in the Same Sandbox:  MySQL and OraclePlaying in the Same Sandbox:  MySQL and Oracle
Playing in the Same Sandbox: MySQL and Oraclelynnferrante
 
JDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdf
JDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdfJDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdf
JDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdfInSync2011
 
Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...
Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...
Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...InSync2011
 
MySQL Cluster 7.2 e 7.3 - por Andrew Morgan
MySQL Cluster 7.2 e 7.3 - por Andrew MorganMySQL Cluster 7.2 e 7.3 - por Andrew Morgan
MySQL Cluster 7.2 e 7.3 - por Andrew MorganMySQL Brasil
 
JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...
JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...
JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...InSync2011
 
What is new in MySQL? (Lars Thalmann)
What is new in MySQL? (Lars Thalmann)What is new in MySQL? (Lars Thalmann)
What is new in MySQL? (Lars Thalmann)Ontico
 
Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011Arun Gupta
 
Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)Oracle BH
 
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011Arun Gupta
 
Shin J2 Ee Programming Half Day
Shin J2 Ee Programming Half DayShin J2 Ee Programming Half Day
Shin J2 Ee Programming Half Daylokendralodha
 
110705 oracle ap
110705 oracle ap110705 oracle ap
110705 oracle apCana Ko
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Arun Gupta
 
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Arun Gupta
 
IT\Soft skills Certification for Indian students, professionals from State Un...
IT\Soft skills Certification for Indian students, professionals from State Un...IT\Soft skills Certification for Indian students, professionals from State Un...
IT\Soft skills Certification for Indian students, professionals from State Un...Prof. Harsha Kestur
 

What's hot (20)

GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
Oracle technology day 19.5.2010. best practices for upgrade to 11g r2
Oracle technology day   19.5.2010. best practices for upgrade to 11g r2Oracle technology day   19.5.2010. best practices for upgrade to 11g r2
Oracle technology day 19.5.2010. best practices for upgrade to 11g r2
 
Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...
Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...
Developer and Fusion Middleware 2 _ Scott Robertson _ SOA, portals and entepr...
 
Mysql overview_20100811
Mysql overview_20100811Mysql overview_20100811
Mysql overview_20100811
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807
 
Java EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolioJava EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolio
 
Playing in the Same Sandbox: MySQL and Oracle
Playing in the Same Sandbox:  MySQL and OraclePlaying in the Same Sandbox:  MySQL and Oracle
Playing in the Same Sandbox: MySQL and Oracle
 
JDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdf
JDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdfJDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdf
JDE & Peoplesoft 3 | John Schiff | JDE World Technology Expanding Your World.pdf
 
Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...
Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...
Developer & Fusion Middleware 2 _ Scott Robertson _ SOA, Portals and Enterpri...
 
MySQL Cluster 7.2 e 7.3 - por Andrew Morgan
MySQL Cluster 7.2 e 7.3 - por Andrew MorganMySQL Cluster 7.2 e 7.3 - por Andrew Morgan
MySQL Cluster 7.2 e 7.3 - por Andrew Morgan
 
JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...
JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...
JD Edwards & Peoplesoft 1 _ Peter Bruce _ Include Work Centre error messages ...
 
What is new in MySQL? (Lars Thalmann)
What is new in MySQL? (Lars Thalmann)What is new in MySQL? (Lars Thalmann)
What is new in MySQL? (Lars Thalmann)
 
Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011Java EE Technical Keynote at JavaOne Latin America 2011
Java EE Technical Keynote at JavaOne Latin America 2011
 
Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)Sun welcome middleware_overview 0324101_bosnia(2)
Sun welcome middleware_overview 0324101_bosnia(2)
 
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
 
Shin J2 Ee Programming Half Day
Shin J2 Ee Programming Half DayShin J2 Ee Programming Half Day
Shin J2 Ee Programming Half Day
 
110705 oracle ap
110705 oracle ap110705 oracle ap
110705 oracle ap
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7
 
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
 
IT\Soft skills Certification for Indian students, professionals from State Un...
IT\Soft skills Certification for Indian students, professionals from State Un...IT\Soft skills Certification for Indian students, professionals from State Un...
IT\Soft skills Certification for Indian students, professionals from State Un...
 

Viewers also liked

Evolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projectsEvolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projectsTom Mens
 
Spring Cloud in a Nutshell
Spring Cloud in a NutshellSpring Cloud in a Nutshell
Spring Cloud in a NutshellTsuyoshi Miyake
 
Griffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyGriffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyJames Williams
 
Android - 04 - Internship project introduction
Android - 04 - Internship project introductionAndroid - 04 - Internship project introduction
Android - 04 - Internship project introductionNoveo
 
1 introduction to java technology
1 introduction to java technology1 introduction to java technology
1 introduction to java technologyrendezvous07
 
Chapter 1 introduction to java technology
Chapter 1 introduction to java technologyChapter 1 introduction to java technology
Chapter 1 introduction to java technologysshhzap
 
Whitep paper on Emerging java and .net technology and critical trends
Whitep paper on Emerging java and .net technology and critical trendsWhitep paper on Emerging java and .net technology and critical trends
Whitep paper on Emerging java and .net technology and critical trendsRakesh Jha
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introductionjyoti_lakhani
 
1 Introduction To Java Technology
1 Introduction To Java Technology 1 Introduction To Java Technology
1 Introduction To Java Technology dM Technologies
 
Introduction to Java Programming
Introduction to Java ProgrammingIntroduction to Java Programming
Introduction to Java ProgrammingPokequesthero
 
Presentation On Android OS
Presentation On Android OSPresentation On Android OS
Presentation On Android OSAkshay Kakkar
 
Introduction to Java Programming Language
Introduction to Java Programming LanguageIntroduction to Java Programming Language
Introduction to Java Programming Languagejaimefrozr
 
What is Android OS in ppt ?
What is Android OS in ppt ? What is Android OS in ppt ?
What is Android OS in ppt ? SoonTips.com
 
Android OS Presentation
Android OS PresentationAndroid OS Presentation
Android OS Presentationhession25819
 

Viewers also liked (20)

Smart Migration to JDK 8
Smart Migration to JDK 8Smart Migration to JDK 8
Smart Migration to JDK 8
 
Evolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projectsEvolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projects
 
Spring Cloud in a Nutshell
Spring Cloud in a NutshellSpring Cloud in a Nutshell
Spring Cloud in a Nutshell
 
Ozis Pre
Ozis PreOzis Pre
Ozis Pre
 
Griffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyGriffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java Technology
 
An introduction to java programming language forbeginners(java programming tu...
An introduction to java programming language forbeginners(java programming tu...An introduction to java programming language forbeginners(java programming tu...
An introduction to java programming language forbeginners(java programming tu...
 
Android - 04 - Internship project introduction
Android - 04 - Internship project introductionAndroid - 04 - Internship project introduction
Android - 04 - Internship project introduction
 
1 introduction to java technology
1 introduction to java technology1 introduction to java technology
1 introduction to java technology
 
Chapter 1 introduction to java technology
Chapter 1 introduction to java technologyChapter 1 introduction to java technology
Chapter 1 introduction to java technology
 
Introduction to java technology
Introduction to java technologyIntroduction to java technology
Introduction to java technology
 
Whitep paper on Emerging java and .net technology and critical trends
Whitep paper on Emerging java and .net technology and critical trendsWhitep paper on Emerging java and .net technology and critical trends
Whitep paper on Emerging java and .net technology and critical trends
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introduction
 
1 Introduction To Java Technology
1 Introduction To Java Technology 1 Introduction To Java Technology
1 Introduction To Java Technology
 
Introduction to Java Programming
Introduction to Java ProgrammingIntroduction to Java Programming
Introduction to Java Programming
 
Java Technology Trends
Java Technology TrendsJava Technology Trends
Java Technology Trends
 
Introduction to-programming
Introduction to-programmingIntroduction to-programming
Introduction to-programming
 
Presentation On Android OS
Presentation On Android OSPresentation On Android OS
Presentation On Android OS
 
Introduction to Java Programming Language
Introduction to Java Programming LanguageIntroduction to Java Programming Language
Introduction to Java Programming Language
 
What is Android OS in ppt ?
What is Android OS in ppt ? What is Android OS in ppt ?
What is Android OS in ppt ?
 
Android OS Presentation
Android OS PresentationAndroid OS Presentation
Android OS Presentation
 

Similar to Java 7 - State of the Enterprise

Java 7 - State of the Enterprise
Java 7 - State of the EnterpriseJava 7 - State of the Enterprise
Java 7 - State of the EnterpriseMarkus Eisele
 
Huge Enterprise Systems Architecture Design with Java EE
Huge Enterprise Systems Architecture Design with Java EEHuge Enterprise Systems Architecture Design with Java EE
Huge Enterprise Systems Architecture Design with Java EERakuten Group, Inc.
 
All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1Markus Eisele
 
Whats Cool in Java E 6
Whats Cool in Java E 6Whats Cool in Java E 6
Whats Cool in Java E 6Arun Gupta
 
Insync 10 session maximize your jd edwards enterprise one investment with t...
Insync 10 session   maximize your jd edwards enterprise one investment with t...Insync 10 session   maximize your jd edwards enterprise one investment with t...
Insync 10 session maximize your jd edwards enterprise one investment with t...InSync Conference
 
Banking on Enterprise OSGi
Banking on Enterprise OSGiBanking on Enterprise OSGi
Banking on Enterprise OSGiGary Field
 
Smalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsSmalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsESUG
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1sandeep54552
 
Big data and its impact on SOA
Big data and its impact on SOABig data and its impact on SOA
Big data and its impact on SOADemed L'Her
 
Java j2ee interview_questions
Java j2ee interview_questionsJava j2ee interview_questions
Java j2ee interview_questionsppratik86
 
OpenID Foundation Retail Advisory Committee Webinar
OpenID Foundation Retail Advisory Committee WebinarOpenID Foundation Retail Advisory Committee Webinar
OpenID Foundation Retail Advisory Committee WebinarMatterport
 
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007Arun Kumar
 
Java j2ee job interview companion ebook
Java j2ee job interview companion ebookJava j2ee job interview companion ebook
Java j2ee job interview companion ebookVijay Ekkaladevi
 
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)mosaicnet
 
Jee Overview Ppt
Jee Overview PptJee Overview Ppt
Jee Overview Pptguest83573c
 

Similar to Java 7 - State of the Enterprise (20)

Java 7 - State of the Enterprise
Java 7 - State of the EnterpriseJava 7 - State of the Enterprise
Java 7 - State of the Enterprise
 
Huge Enterprise Systems Architecture Design with Java EE
Huge Enterprise Systems Architecture Design with Java EEHuge Enterprise Systems Architecture Design with Java EE
Huge Enterprise Systems Architecture Design with Java EE
 
All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1
 
Whats Cool in Java E 6
Whats Cool in Java E 6Whats Cool in Java E 6
Whats Cool in Java E 6
 
Java/J2EE Companion
Java/J2EE CompanionJava/J2EE Companion
Java/J2EE Companion
 
Insync 10 session maximize your jd edwards enterprise one investment with t...
Insync 10 session   maximize your jd edwards enterprise one investment with t...Insync 10 session   maximize your jd edwards enterprise one investment with t...
Insync 10 session maximize your jd edwards enterprise one investment with t...
 
Banking on Enterprise OSGi
Banking on Enterprise OSGiBanking on Enterprise OSGi
Banking on Enterprise OSGi
 
Smalltalk in Enterprise Applications
Smalltalk in Enterprise ApplicationsSmalltalk in Enterprise Applications
Smalltalk in Enterprise Applications
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1
 
Big data and its impact on SOA
Big data and its impact on SOABig data and its impact on SOA
Big data and its impact on SOA
 
Java j2ee interview_questions
Java j2ee interview_questionsJava j2ee interview_questions
Java j2ee interview_questions
 
Imp Book
Imp BookImp Book
Imp Book
 
OpenID Foundation Retail Advisory Committee Webinar
OpenID Foundation Retail Advisory Committee WebinarOpenID Foundation Retail Advisory Committee Webinar
OpenID Foundation Retail Advisory Committee Webinar
 
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
 
One java book
One java bookOne java book
One java book
 
Java j2ee job interview companion ebook
Java j2ee job interview companion ebookJava j2ee job interview companion ebook
Java j2ee job interview companion ebook
 
Extreme Competition
Extreme CompetitionExtreme Competition
Extreme Competition
 
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
 
Pratyush Agarwal Net 6.5 Yrs
Pratyush Agarwal Net 6.5 YrsPratyush Agarwal Net 6.5 Yrs
Pratyush Agarwal Net 6.5 Yrs
 
Jee Overview Ppt
Jee Overview PptJee Overview Ppt
Jee Overview Ppt
 

More from Markus Eisele

Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22Markus Eisele
 
Going from java message service (jms) to eda
Going from java message service (jms) to eda Going from java message service (jms) to eda
Going from java message service (jms) to eda Markus Eisele
 
Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.Markus Eisele
 
What happens when unicorns drink coffee
What happens when unicorns drink coffeeWhat happens when unicorns drink coffee
What happens when unicorns drink coffeeMarkus Eisele
 
Stateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the CloudStateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the CloudMarkus Eisele
 
Java in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MJava in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MMarkus Eisele
 
Java in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessJava in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessMarkus Eisele
 
Migrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMigrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMarkus Eisele
 
Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Markus Eisele
 
Cloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slidesCloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slidesMarkus Eisele
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EEMarkus Eisele
 
Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained  Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained Markus Eisele
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithMarkus Eisele
 
Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Markus Eisele
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Markus Eisele
 
Nine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take youNine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take youMarkus Eisele
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsMarkus Eisele
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
 

More from Markus Eisele (20)

Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22
 
Going from java message service (jms) to eda
Going from java message service (jms) to eda Going from java message service (jms) to eda
Going from java message service (jms) to eda
 
Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.
 
What happens when unicorns drink coffee
What happens when unicorns drink coffeeWhat happens when unicorns drink coffee
What happens when unicorns drink coffee
 
Stateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the CloudStateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the Cloud
 
Java in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MJava in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/M
 
Java in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessJava in the Age of Containers and Serverless
Java in the Age of Containers and Serverless
 
Migrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMigrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systems
 
Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19
 
Cloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slidesCloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slides
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EE
 
Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained  Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Nine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take youNine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take you
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java Developers
 

Recently uploaded

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 

Java 7 - State of the Enterprise

  • 1. Java 7 – State of the Enterprise Challenges, Adoption Path and Reasons to move forward … 1 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 2. Disclaimer The thoughts expressed here are the personal opinions of the author and no official statement of the msg systems ag. 2 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 3. Overview 1. Introduction 2. Reasons: Why Migrate? 3. Migration Procedures 4. Challenges 5. Adoption Paths 6. Restrictions 7. Real World Answers 3 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 5. msg systems ag msg netzwerkservice PREVO-System AG finnova AG Bankware m3 management consulting GmbH GmbH 1980 1990 1995 1996 1997 1998 2000 2006 2008 2009 2010 Foundation of GILLARDON financial Regional company msg global msg services ag msg systems software AG (now in the USA solutions ag msgGillardon AG) COR AG (now COR&FJA AG) msg systems Romania S.R.L. Industries: • Insurance • Financial Services • Automotive Individual Solutions: • Communications • Allianz | AUDI | BG-PHOENICS | BMW • Travel & Logistics Financial Services | BMW Group | Daimler | • Utilities DER Deutsches Reisebüro | Deutsche Bank | Deutsche Post | Sächsischer • Life Science & Healthcare Landtag | Versicherungskammer Bayern | VR • Government Leasing 5 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 6. Java 7 Release Contents • Java Language • Project Coin (JSR-334) • Class Libraries • NIO2 (JSR-203) • Fork-Join framework, ParallelArray (JSR-166y) • Java Virtual Machine • The DaVinci Machine project (JSR-292) • InvokeDynamic bytecode • Miscellaneous things 6 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 7. Why Upgrade? – new Features! Features of Java SE 7 • Improved performance, stability and security. • Enhancements in the Java Plug- in for Rich Internet Applications development and deployment. • Java Programming language enhancements that enable developers with ease of writing and optimizing the Java code. • Enhancements in the Java Virtual machine to support Non- Java languages. http://www.slideshare.net/myfear/introducing-java-7 7 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 8. Why Upgrade? – Old Stuff is getting EOL‘ed! Java SE Support Roadmap Release EOL GA Date EOL Support Period Family Notification 1.4 Feb 2002 Dec 2006 Oct 2008 6 ½ years 5.0 May 2004 Apr 2008 Oct 2009 5 ½ years 6 Dec 2006 Feb 2011 Jul 2012 5 1/2 years Example Java for Business Support Roadmap EOL Release Notification Premier Extended Sustaining GA Date Family Support until Support until Period 1.4 Feb 2002 Apr 2008 Feb 2010 Feb 2013 Indefinite 5.0 May 2004 Jun 2009 May 2011 May 2014 Indefinite 6 Dec 2006 Jan 2011 Dec 2013 Dec 2016 Indefinite http://www.oracle.com/technetwork/java/javase/eol-135779.html 8 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 9. Why Upgrade? – It‘s a hype! Java 7 Support Slated for JetBrains IDE PCWorld - Feb 23 2011 Updated Oracle NetBeans IDE offers Java 7 Computerworld - Apr 20 2011 Oracle releases Java 7 Standard Edition Inquirer - Jul 29 2011 Eclipse Announces Full Support for Java 7 San Francisco Chronicle - Sep 29 2011 9 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 10. GitHub and Stack Overflow http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/ 10 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 11. Java Version Market Share – on Jelastic http://blog.jelastic.com/2012/02/06/java-version-market-share-january-2012/ 11 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 12. Enterprise principles But: Enterprises think different:  Maximize Benefit to the Enterprise  Business Continuity  Common Use Applications  Requirements-Based Change  Responsive Change Management  Control Technical Diversity  Interoperability 12 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 13. Have You Adopted Java 7 Yet? http://java.dzone.com/polls/have-you-adopted-java-7-yet 13 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 14. Migration Procedure – General Approach Tests 14 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 15. Migration Procedure – Check & Change • Pre-Flight Check  Development Configuration  Does your IDE support your version?  What about your build tool?  Your quality checkers?  Your ALM solutions?  Project Dependencies (OSS & Commercial)  Do your libraries run on/support new version?  Your Company Specific Frameworks  They are out there. Check them!  Deprecated Features  Do you use anything that has been deprecated?  Your chance to refactor a bit!  Incompabilities  http://www.oracle.com/technetwork/java/javase/compatibility- 417013.html#incompatibilities • Change if necessary  Control what you do!  Make a list and track it!  Other Projects may need it to estimate efforts! http://download.oracle.com/javase/7/docs/webnotes/adoptionGuide/index.html 15 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 16. Migration Procedure – Build & Package • Check your build  Change JRE/JDK libraries  Change source version level for maven  Check special ANT tasks (ftp..) • Change if necessary  All of the above  Also a very good time to :  change build tools  Get rid of old and unused stuff  Clean old mess • Test-drive your “updated” build process carefully. 16 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 17. Migration Procedure – Deployment • Using Java 7 on the Client is no save solution at the moment! • http://www.java.com/ still distributes Java 1.6_30 to the public. • If you chose to change your deployments there are some chances to improve it:  Change your Applets to use the Deployment Toolkit (codebase)  Utilize the new “resource per OS” feature  Think about partly signing your JNLP files  Some small enhancements to Applet loading (single network requests) 17 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 18. Migration Procedure – Tests • Excurse: If your tests randomly fail with Java 7 • JUnit uses Class.getMethods() to find all tests in a class  This list is not explicitly sorted in any order!  Until Java 6 the methods were returned in same order as declared in source file! This changed with Java 7. • Repair your tests to not rely on execution order of @Test methods! • Test. Test. Test. 18 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 19. Migration Procedure – Update Documentation • Why are developers adverse to documenting software systems they’ve worked on?  Code should be the documentation  The act of solving a problem is more exciting than writing about it  We are lazy.  The minute you write a doc it is out of date  Nobody is ever going to read it  It seemed impossible to organize documentation usefully  …. • Chances are:  Write a “Update your environment to Java 7” checklist for your team-members  Write a “How expensive it really is to migrate to Java 7” blog post  Have a good idea about what to bill the customer for 19 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 20. Challenges • From a desktop perspective Java 7 is still considered “for developers“ only.  You still can’t download it from java.com  And your Java 6 will never ask you for an update. • Some trust is lost  The Java 7.0 release had some ugly bugs around http://blog.eisele.net/2011/07/dont-use-java-7-are-you-kidding-me.html  We have Java 7u1 out since 19/10/11 which solved them • Not all commercial products ready until today:  WebSphere Application Server V8 • But: Adoption of Java SE 7 is rising:  WebLogic 12c 20 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 21. SE 6 still not broadly adopted 21 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 26/06/11
  • 22. Decision making as of today. Your new project in 2011 no yes Going live before Q1-Q2/2012? yes no All tools/environments supported? SE 6 yes no Desktop Development? SE 7 SE 7 rolled-out? yes no 22 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 23. What to expect if you decide to travel? 23 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 26/06/11
  • 24. Coin – Underscores in Numeric Literals private static final int default_kostenart = 215879; private static final int ZZ_BUFFERSIZE = 16384; 24 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 25. Coin - String Switch Statement // … if (o1.getVehicleFeatureDO().getFeatureType().equals( "PAINTWORK") || o1.getVehicleFeatureDO().getFeatureType().equals( "UPHOLSTERY")) { return -1; } else if (o1.getVehicleFeatureDO().getFeatureType().equals("OPTION")) { return 1; } //… 25 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 26. Coin - String Switch Statement String s = o1.getVehicleFeatureDO().getFeatureType(); switch (s) { case "PAINTWORK": case "UPHOLSTERY" return -1; case "OPTION" return 1; } 26 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 27. Coin – Diamond Operator final List<SelectItem> items = new ArrayList<SelectItem>(); Collection<KalkFLAufwandsverlaufBE> saveVerlauf = new ArrayList<KalkFLAufwandsverlaufBE>(); final List<ErrorRec> errorRecList = new ArrayList<ErrorRec>(); List<ProjektDO> resultList = new ArrayList<ProjektDO>(); Map<String, String> retVal = new HashMap<String, String>(); 27 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 28. Coin – Diamond Operator final List<SelectItem> items = new ArrayList<>(); Collection<KalkFLAufwandsverlaufBE> saveVerlauf = new ArrayList<>(); final List<ErrorRec> errorRecList = new ArrayList<>(); List<ProjektDO> resultList = new ArrayList<>(); Map<String, String> retVal = new HashMap<>(); 28 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 29. Coin – Automatic Resource Management public DateiAnhangDO setDateiContent(DateiAnhangDO dateiAnhang, InputStream dateiInhalt) throws ValidationException { OutputStream out = null; try { File f = new File(dateiAnhang.getDateiNameSystem()); out = new FileOutputStream(f); byte[] buf = new byte[1024]; int len; while ((len = dateiInhalt.read(buf)) > 0) { out.write(buf, 0, len); } } catch (IOException e) { // Error management skipped throw AppExFactory.validation(CLAZZ, true, errorRecList); } finally { try { out.close(); } catch (IOException e) { // Error management skipped throw AppExFactory.validation(CLAZZ, true, errorRecList); } try { dateiInhalt.close(); } catch (IOException e) { // Error management skipped throw AppExFactory.validation(CLAZZ, true, errorRecList); } } return dateiAnhang; } 29 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 30. Coin – Automatic Resource Management public void setDateiContent(String dateiAnhang, InputStream dateiInhalt) throws ValidationException { try (InputStream in = dateiInhalt; OutputStream out = new FileOutputStream(new File(dateiAnhang))) { byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } } catch (IOException e) { // Error management details skipped throw AppExFactory.validation(CLAZZ, true, errorRecList); } return dateiAnhang; } 30 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 31. Coin - Multi Catch try { final Method method = cls.getMethod("getDefault", new Class[0]); final Object obj = method.invoke(cls, new Object[0]); return (Enum) obj; } catch (NoSuchMethodException nsmex) { throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault method not found", nsmex); } catch (IllegalAccessException iae) { throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault method not accessible", iae); } catch (InvocationTargetException ite) { throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault method invocation exception", ite); } 31 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 32. Coin - Multi Catch try { final Method method = cls.getMethod("getDefault", new Class[0]); final Object obj = method.invoke(cls, new Object[0]); return (Enum) obj; } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException| InvocationTargetException nsmex) { throw new EmergencyException(Enum.class, Level.SEVERE, "getDefault method not found", nsmex); } 32 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 33. NIO.2 public boolean createZIPFile(String workDir, String zipFileName, ZipOutputStream out, String subdir) { boolean zipOk = false; String outFilename = zipFileName; FileInputStream in = null; boolean closeZip = true; String nfilen = ""; try { if (out == null) { out = new ZipOutputStream(new FileOutputStream(outFilename)); } else { closeZip = false; } if (subdir != null) { workDir = workDir + "/" + subdir; } // Compress the files File srcDir = new File(workDir); File[] files = srcDir.listFiles(); byte[] buf = new byte[1024]; for (int i = 0; i < files.length; i++) { if (zipFileName.equals(files[i].getName())) { continue; } if (files[i].isDirectory()) { createZIPFile(workDir, zipFileName, out, files[i].getName()); Recursive ZIP File Handling continue; } in = new FileInputStream(files[i]); - ZipOutputStream // Add ZIP entry to output stream. nfilen = files[i].getName(); - ZipEntry if (subdir != null) { nfilen = subdir + "/" + nfilen; } out.putNextEntry(new ZipEntry(nfilen)); // Transfer bytes from the file to the ZIP file int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } // Complete the entry out.closeEntry(); in.close(); zipOk = true; } // Complete the ZIP file } catch (FileNotFoundException e) { //skipped } catch (IOException e) { //skipped } finally { try { if (in != null) { in.close(); } } catch (IOException e) { Error Handling (condensed ) //skipped } try { if (closeZip && out != null) { out.close(); } } catch (IOException e) { //skipped } } return (zipOk); } 33 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 34. NIO.2 – (ZIP)FileSystem, ARM, FileCopy, WalkTree public static void create(String zipFilename, String... filenames) throws IOException { try (FileSystem zipFileSystem = createZipFileSystem(zipFilename, true)) { final Path root = zipFileSystem.getPath("/"); //iterate over the files we need to add for (String filename : filenames) { final Path src = Paths.get(filename); //add a file to the zip file system if(!Files.isDirectory(src)){ private static FileSystem createZipFileSystem(String final Path dest = zipFileSystem.getPath(root.toString(), src.toString()); zipFilename, boolean create) throws IOException { final Path parent = dest.getParent(); // convert the filename to a URI if(Files.notExists(parent)){ System.out.printf("Creating directory %sn", parent); final Path path = Paths.get(zipFilename); Files.createDirectories(parent); final URI uri = URI.create("jar:file:" + } Files.copy(src, dest, StandardCopyOption.REPLACE_EXISTING); path.toUri().getPath()); } else{ final Map<String, String> env = new HashMap<>(); //for directories, walk the file tree Files.walkFileTree(src, new SimpleFileVisitor<Path>(){ if (create) { @Override env.put("create", "true"); public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { } final Path dest = zipFileSystem.getPath(root.toString(), return FileSystems.newFileSystem(uri, env); file.toString()); } Files.copy(file, dest, StandardCopyOption.REPLACE_EXISTING); return FileVisitResult.CONTINUE; } @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { final Path dirToCreate = zipFileSystem.getPath(root.toString(), dir.toString()); if(Files.notExists(dirToCreate)){ System.out.printf("Creating directory %sn", dirToCreate); Files.createDirectories(dirToCreate); } return FileVisitResult.CONTINUE; } }); } } } } 34 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 35. Sumary • Nice, new features • Moving old stuff to new stuff isn’t an automatism • Most relevant ones:  Multi-Catch probably the most used one  Diamond Operator • Maybe relevant:  NIO.2  Fork/Join • Not relevant: (at least to the projects I looked at!)  Better integer literals  String in switch case  Varargs Warnings  InvokeDynamik 35 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 36. Lesson in a tweet “The best thing about a boolean is even if you are wrong, you are only off by a bit.” (Anonymous) http://www.devtopics.com/101-great-computer-programming-quotes/ 36 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011
  • 37. Thank you for your attention Markus Eisele Principal IT Architect Phone: +49 89 96101-0 markus.eisele@msg-systems.com www.msg-systems.com www.msg-systems.com 37 Markus Eisele, Oracle ACE Director FMW & SOA msg systems ag, 2011