¸Þ´º ¹Ù·Î°¡±â º»¹® ¹Ù·Î°¡±â
´Ý±â
¾ÆÀÌÄÜ/½Ç½Ã°£ Ä«Åå»ó´ã
ÇØ´ç°úÁ¤ÀÇ Çо÷¼ºÃëµµ°¡ ºÎÁ·Çϰųª ¹Ù¶ó´Â »çÇ×ÀÌ ÀÖÀ» ½Ã °ÇÀÇÇÏ¿© Áֽñ⠹ٶø´Ï´Ù.
ÇØ´ç ±³À°°úÁ¤ (Çʼö)Çʼö
¼º¸í (À͸íÁ¦°¡´É) Çʼö
±³À°À» Âü¿©ÇϽø鼭
°¡Àå ÁÁ¾Ò´ø ºÎºÐ Çʼö
±³À°À» Âü¿©ÇϽø鼭
°¡Àå ¾î·Á¿ü´ø ºÎºÐ Çʼö
Àü¼ÛÇϱâ
´Ý±â
¼­¿ïIT¿¡°Ô ¹Ù¶ó´Â °£°îÇÑ ¸Þ½ÃÁö
ÇØ´ç ±³À°°úÁ¤ (Çʼö) Çʼö
¼º¸í (À͸íÁ¦°¡´É) Çʼö
¿¬¶ôó
³»¿ë Çʼö
°³ÀÎÁ¤º¸¼öÁý µ¿ÀÇ Çʼö ¼­¿ïITÁ÷¾÷Àü¹®Çб³ÀÇ °³ÀÎÁ¤º¸ Ãë±Þ¹æħ¿¡ µ¿ÀÇ ÇÕ´Ï´Ù.
Àü¼ÛÇϱâ
´Ý±â
K-Digital Training
¼­¿ïÁö¿ª ÀÎÀûÀÚ¿ø°³¹ßÀ§¿øȸ ¿ì¼ö±â°ü»ó 2³â¿¬¼Ó ¼ö»ó
Æò°¡µµ±¸ ¿ì¼ö»ç·Ê Àå·Á»ó ¼ö»ó

¼­¿ïIT¾ÆÄ«µ¥¹Ì È«´ë

¿ì¼ö ÈƷñâ°ü
quick menu ±³À°°úÁ¤ ¿Â¶óÀλó´ã ¼ö°­Èıâ Áö½ÄÄܼ­Æ® ¿À½Ã´Â±æ
ÇнÀÀÚ·á½Ç
¸ñ·Ï
¿î¿µÀÚ | Á¶È¸ 1065 | 2020.10.22 ÀÚ¹Ù(Java) ¹öÀüº° Ư¡




Java ¹öÀüº° Ư¡



JDK 1.0(1991) 

¤ýOAK ¹ßÇ¥: GE»çÀÇ ¿äûÀ¸·Î, ½ã¸¶ÀÌÅ©·Î ½Ã½ºÅÛÁî¿¡¼­ C++ÀÇ ´ÜÁ¡À» ±Øº¹ÇÏ°íÀÚ ¸¸µç ¾ð¾î

¤ý¸Þ¸ð¸® ÇÒ´ç/ÇØÁ¦ÀÇ ¾î·Á¿ò°ú ´ÙÁß»ó¼ÓÀ¸·Î ÀÎÇÑ ½Ç¼öÀ¯¹ßÀ» ±Øº¹ÇÏ·Á°í Çß´Ù.

¤ý1996³â, JDK 1.0¹ßÇ¥ : Java·Î °³¸í, Java Virtual Machine 1.0À» ¹ßÇ¥Çß´Ù. Java Appletµµ À̶§ óÀ½ µµÀÔ



JDK1.1(1997)

¤ýJDBC, RMI, Reflection, JIT, Inner Class °³³äÀÌ Æ÷ÇÔ



JDK 1.2(1998)

¤ýJava SE 1.2, ME 1.2, EE 1.2 ¼¼°¡Áö¹öÀüÀ¸·Î ¹ßÇ¥ 

 - SwingÀÌ SE¿¡ Æ÷ÇÔ, Corba IDL(ÀÌÁ¾±â±â°£ ÇÔ¼öÈ£Ãâ ½ºÆå), Collection Framework Æ÷ÇÔ



JDK 1.3(2000)

¤ýHotSpot(Sun¿¡¼­ ¸¸µç JIT±¸Çö)

¤ýJNDI(µð·ºÅ丮 ¹× À̸§À¸·Î ¿øÇÏ´Â ¼­ºñ½º ãÀ½)




JDK 1.4(2002)

¤ýJava Web StartÆ÷ÇÔ (À¥ ºê¶ó¿ìÀú¿¡¼­ ÇÑ ¹øÀÇ Å¬¸¯À¸·Î ¸ðµç ±â´ÉÀ» °®Ãá ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼öÀÖ´Â ±â´ÉÀ» Á¦°øÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ ¹èÆ÷ ±â¼ú)

¤ýJCP(Java Community Process)¿¡ ÀÇÇؼ­ ¿ÀǼҽº Á¤Ã¥À¸·Î ÀÚ¹Ù°¡ °ü¸®µÇ±â ½ÃÀÛÇÑ ¹öÀü

¤ýJava 2 Security ¸ðµ¨ÀÇ È®¸³

¤ýLanguage: assert µµÀÔ

¤ýAPI :  Regular Expression, Assert keyword, Security 2 version(ÇöÀç security model), Non Blocking IO(NIO)





Java 1.5(2004)

¤ý±â´ÉÀûÀ¸·Î °¡Àå ¸¹Àº º¯È­°¡ »ý±ä¹öÀü (Generics°¡ °¡Àå ´ëÇ¥Àû)

¤ýLanguageI: Generics , annotation, auto boxing, enum,vararg ,foreach, static imports µµÀÔ

¤ýAPI : java.util.concurrent API, scanner class




Java 6(2006)

¤ý°¡ºñÁö Ä÷ºÅÍ G1(Garbage First) GC Áö¿ø

¤ýJDK 6¿¡¼­´Â G1 GC¸¦ early access¶ó°í ºÎ¸£¸ç ±×³É ½ÃÇè »ï¾Æ »ç¿ëÇÒ ¼ö¸¸ ÀÖµµ·Ï ÇÑ´Ù.

¤ýº¸¾È, ¼º´É °­È­ 

¤ýJVM/Swing¿¡ ÀÖ¾î ¸¹Àº Performance Çâ»ó(synchronization, compiler, GC,start-up time)



Java 7(2011) 

¤ýJVM : Dynamic Language support (invoked dynamic - new byte operation)

¤ýLanguage : try-resource, String in Switch, generics ³» ŸÀÔÃß·Ð, ¼ýÀÚ¿¡¼­ underscore »ç¿ë °¡´É

¤ýAPI : Concurrency °­È­, NIO °­È­, sort°­È­, crypto°­È­, GPU°­È­

¤ýJavaFX°¡ ±âº»À¸·Î Æ÷ÇÔ

¤ýJDK 7¿¡¼­ Á¤½ÄÀ¸·Î G1 GC¸¦ Æ÷ÇÔÇÏ¿© Á¦°ø

¤ý¾ÈÁ¤ÀûÀÎ ARMÁö¿ø

 * generics³» ŸÀÔ Ãß·Ð

   -ÀÌÀü ¹öÀü 

     Map<String, Object> user = new HashMap<String, Object>();

   - 7¹öÀü

     Map<String, Object> user = new HashMap<> ();


 * Switch¹®¿¡¼­ ¹®ÀÚ¿­ Çã¿ë

   switch (day) { 

    case "NEW": System.out.println("Order is in NEW state"); break; 

    case "CANCELED": System.out.println("Order is Cancelled"); break; 

    case "REPLACE": System.out.println("Order is replaced successfully"); break; 

    case "FILLED": System.out.println("Order is filled"); break; 

    default: System.out.println("Invalid"); 

    }


  * 7 ¿¡¼­´Â try with resource ±¸¹®ÀÌ Ãß°¡µÇ¾î ÀÚµ¿À¸·Î ÀÚ¿øµéÀ» closeÇÑ´Ù. 

    ÀÌ·¯ÇÑ ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇϱâ À§Çؼ­´Â AutoClosable, Closeable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù. 

    Java 7ÀÇ Streams, Files, Socket, DB ConnectionµîÀº ÇØ´ç ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ°í ÀÖ´Ù. 

   - ÀÌÀü ¹öÀü

     public static void main(String args[]) { 

      FileInputStream fin = null; 

      BufferedReader br = null; 

      try { 

        fin = new FileInputStream("info.xml"); 

         br = new BufferedReader(new InputStreamReader(fin)); 

        if (br.ready()) { 

            String line1 = br.readLine(); 

            System.out.println(line1); 

           } 

         } catch (Exception ex) { 

           System.out.println("error!!"); 

          } finally { 

            try {

           if (fin != null) fin.close(); 

           if (br != null) br.close(); 

          } catch (IOException ie) { 

            System.out.println("Failed to close files"); 

           } 

         } 

       }

   - 7 ¹öÀü

      public static void main(String args[]) {

      try (FileInputStream fin = new FileInputStream("info.xml");

            BufferedReader br = new BufferedReader(new InputStreamReader(fin));) {

        if (br.ready()) {

            String line1 = br.readLine();

            System.out.println(line1);

        }

      } catch (Exception ex) {

        System.out.println("error");

       }

      }

     }



  * Fork/Join Framework

   - fork/join framework´Â ¸ÖƼÇÁ·Î¼¼¼­ÀÇ ¼º´ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ExecutorServiceÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöüÀÌ´Ù. 

     ¹Ýº¹ÀûÀ¸·Î ÀÛÀº Á¶°¢À¸·Î ÀÛ¾÷À» ³ª´©¾î ¼öÇà ÇÒ ¼ö ÀÖ°Ô ¼³°èµÇ¾îÀÖ´Ù. 


  * Underscore in Numeric literal

   - ¼ýÀÚÇü(Á¤¼ö,½Ç¼ö)¿¡ _(underscore)¹®ÀÚ¿­À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. Å« ¼ýÀÚ¸¦ ´Ù·ê¶§ °¡µ¶¼ºÀÌ ÁÁ¾ÆÁø´Ù. 

     int billion = 1_000_000_000; // 10^9

     long creditCardNumber = 1234_4567_8901_2345L; //16 digit number

     long ssn = 777_99_8888L;

     double pi = 3.1415_9265;

     float pif = 3.14_15_92_65f;



Java 8(2014)

   - JDK´Â 2°³ ¹öÀüÀ¸·Î ³ª´¸. Çϳª´Â Æó¼âÀûÀÎ »ó¾÷ ÄÚµå ±â¹ÝÀÇ Oracle JDK, Çϳª´Â ¿ÀÇ ¼Ò½º ±â¹ÝÀÇ OpenJDKÀÌ´Ù.

   - Oracle JDK¿¡ Á¸ÀçÇÏ°í OpenJDK¿¡´Â ¾ø´Â ´ëÇ¥Àû ±â´ÉÀ¸·Î ±Û²Ã ¶óÀ̺귯¸®¿Í Java Web Start°¡ ÀÖ´Ù. 

     ¼­¹ö ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡´Â ¾²ÀÌÁö ¾Ê´Â ±â´ÉµéÀÌ´Ù.

   ¤ýLambda ¹× ÇÔ¼öÇüÇÁ·Î±×·¡¹Ö, Default Method Interface, ¸Þ¼Òµå ÂüÁ¶

   ¤ýJEP¿¡ ÀÇÇؼ­ »õ·Î¿î ±â´ÉµéÀÌ ¹ßÀǵDZ⠽ÃÀÛ.

   ¤ýAPI : Nashorn (JS¿£Áø), new Date and Time API, Stream API, Collection¿¡ ´ëÇÑ ÇÔ¼öÇüÈ­ (Interface¿¡ default·Î ÀÎÇØ °¡´É)

          »õ·Î¿î ³¯Â¥¿Í ½Ã°£ APIÀÎ java.time ÆÐÅ°Áö¸¦ Á¦°ø


     *  ±âÁ¸ Calendar Ŭ·¡½º¿¡¼­´Â ¿ù(month)À» ³ªÅ¸³¾ ¶§ 1¿ùºÎÅÍ 12¿ùÀ» 0ºÎÅÍ 11±îÁö·Î Ç¥ÇöÇØ¾ß ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖ´Ù.

        ±âÁ¸ Calendar ÀνºÅϽº´Â ºÒº¯ °´Ã¼(immutable object)°¡ ¾Æ´Ï¶ó¼­ °ªÀÌ ¼öÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù.

           LocalDate today = LocalDate.now();

           System.out.println("¿ÃÇØ´Â " + today.getYear() + "³âÀÔ´Ï´Ù.");



Java 9(2017)

   ¤ýJava¿ë REPL, JShell µîÀå (´ëÈ­½Ä REPL(Read Eval print Loop) µµ±¸ Á¦°ø)

   ¤ýModular System (Jigsaw)Áö¿ø

   ¤ýºÒº¯ Collection(immutable collection)Á¦°ø

   ¤ýJava 9´Â À͸í Ŭ·¡½º¿¡ ´ëÇÑ Diamond Operator¸¦ Çã¿ë (anonymous inner Ŭ·¡½º¿¡¼­ diamond operator »ç¿ë °¡´É)

   ¤ýtry-with-resources °³¼±

   ¤ýÀÎÅÍÆäÀ̽º ³» private ¸Þ¼Òµå »ç¿ë °¡´É

   ¤ýReactive Stream API Ãß°¡

   ¤ýOptional To Stream

   ¤ýHTTP2 Client

   ¤ýiCMS GC Deprecated µÊ


Java 10(2018)

   ¤ývar Å°¿öµå¸¦ ÀÌ¿ëÇÑ Áö¿ªº¯¼ö ¼±¾ð ¹× ŸÀÔÃß·Ð °¡´É

   ¤ýºÒº¯(Unmodifiable) Collection Çâ»ó

   ¤ýº´·Ä ó¸® °¡ºñÁö Ä÷º¼Ç µµÀÔÀ¸·Î ÀÎÇÑ ¼º´É Çâ»ó

   ¤ý°³º° ¾²·¹µå·Î ºÐ¸®µÈ Stop-The-World

   ¤ý·çÆ® CA ¸ñ·Ï µî Ãß°¡

   ¤ýJDKÀÇ Repository°¡ Çϳª·Î ÅëÇÕ

   ¤ýJVM Èü ¿µ¿ªÀ» ½Ã½ºÅÛ ¸Þ¸ð¸®°¡ ¾Æ´Ñ ´Ù¸¥ Á¾·ùÀÇ ¸Þ¸ð¸®¿¡µµ ÇÒ´ç °¡´É

   ¤ý½ÇÇèÀûÀÎ Java ±â¹ÝÀÇ JIT(Just In Time) ÄÄÆÄÀÏ·¯ Ãß°¡

   ¤ýDeprecatedµÈ API´Â Java SE 10¿¡¼­ ¸ðµÎ »èÁ¦


Java 11(2018.09)

   ¤ýÀÏ¹Ý Áö¿øÀº 2023³â 9¿ù, ¿¬Àå Áö¿øÀº 2026³â 9¿ù¿¡ Á¾·áµÉ ¿¹Á¤ÀÌ´Ù. 

   ¤ýÀÌŬ¸³½º Àç´ÜÀ¸·Î ³Ñ¾î°£ Java EE°¡ JDK¿¡¼­ »èÁ¦µÇ°í, JavaFXµµ JDK¿¡¼­ ºÐ¸®µÇ¾î º°µµÀÇ ¸ðµâ·Î Á¦°øµÈ´Ù. 

   ¤ý¶÷´Ù ÆĶó¹ÌÅÍ¿¡ ´ëÇÑ Áö¿ªº¯¼ö ¹®¹ý : (var x, var y) -> x.process(y)  =>  (x, y) -> x.process(y)

         IntStream.of(1, 2, 3).filter((var i) -> i % 2 == 0).forEach(System.out::println); 

         IntStream.of(1, 2, 3).filter(i -> i % 2 == 0).forEach(System.out::println); 

   ¤ýHTTP Ŭ¶óÀ̾ðÆ® Ç¥ÁØÈ­ ±â´É Ãß°¡ : Java 9, 10¿¡ »ç¿ëµÇ¾ú´ø jdk.incubator.http ÆÐÅ°Áö°¡ Ç¥ÁØÈ­µÇ¾î java.net.http ÆÐÅ°Áö·Î Ãß°¡

   ¤ý³×½ºÆ® ±â¹Ý ¾×¼¼½º ÄÁÆ®·Ñ(Nest-based access controls)

    - ¾×¼¼½º °¡´É¼ºÀ» È®ÀåÇÏ´Â ºê¸´Áö ¸Þ¼Òµå »ðÀÔ Áö¿ø ÄÄÆÄÀÏ·¯ÀÇ Çʿ伺 Á¦°Å

    - ´ÙÀ̳ª¹Í Ŭ·¡½º-ÆÄÀÏ ÄܽºÅº½º(Dynamic class-file constans) 

    - »õ·Î¿î ÇüÅÂÀÇ ±¸Ã¼È­ °¡´ÉÇÑ Å¬·¡½ºÆÄÀÏ »ó¼ö¸¦ ¸¸µå´Âµ¥ ¿ä±¸µÇ´Â ºñ¿ë°ú °£¼·À» ÁÙÀÌ°í, Ç¥Çö·Â°ú ¼º´ÉÀ» À§ÇÑ º¸´Ù ´Ù¾çÇÑ ¿É¼Ç Á¦°ø 

    - ¿¦½Ç·Ð(Epsilon) °¡Áöºñ Ä÷ºÅÍ : ¿À¹öÇìµåÀÇ ÃÖÀúÁö¿¬°ú ÇÒ´ç Á¦ÇÑÀÌ °¡´ÉÇÑ ¿ÏÀüÇÑ ¼öµ¿ °¡ºñÁö Ä÷ºÅÍ Àû¿ë

   ¤ýThe Z Garbage Collector(ZGC) : ´ë±â ½Ã°£ÀÌ ³·Àº È®Àå °¡´ÉÇÑ(Scalable Low-Latency) GCÀÌ´Ù.

   ¤ýÇöóÀÌÆ® ·¹ÄÚ´õ(Flight Recorder) : ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ǰú ÇÖ½ºÆÌ JVMÀÇ ¿À·ù ÇØ°áÀ» À§ÇÑ ³·Àº ¿À¹öÇìµå µ¥ÀÌÅÍ ¼öÁý ÇÁ·¹ÀÓ¿öÅ© Á¦°ø



Java 12(2019.03)

   - Switch¹®ÀÇ È®Àå

     switch (day) { 

       case MONDAY, FRIDAY, SUNDAY -> System.out.println(6); 

       case TUESDAY -> System.out.println(7); 

       case THURSDAY, SATURDAY -> System.out.println(8); 

       case WEDNESDAY -> System.out.println(9); 

     }


±Û¸ñ·Ï