Java, Up to Date
    Sources




        Copyright © 2012 Akira Koyasu Some rights reserved.
StringInSwitch.java

 1   p a c k a g e java7.coin;
 2
 3   p u b l i c c l a s s StringInSwitch {
 4
 5        p u b l i c s t a t i c v o i d main(String[] args) {
 6                String flag = "aaa";
 7                s w i t c h (flag) {
 8                        c a s e "aaa":
 9                               System. out .println("aaa");
10                               break;
11                        c a s e "bbb":
12                               System. out .println("bbb");
13                               break;
14                        c a s e "ccc":
15                               System. out .println("ccc");
16                               break;
17                }
18        }
19   }
20    1




1
NumericLiteral.java

 1 p a c k a g e java7.coin;
 2
 3 p u b l i c c l a s s NumericLiteral {
 4
 5         p u b l i c s t a t i c v o i d main(String[] args) {
 6                 i n t b = 0b1110;            // binary (new!)
 7
 8                 i n t o = 016;               // octal
 9                 i n t d = 14;                // decimal
10                 i n t x = 0xE;               // hexadecimal
11
12                 System. out .println(b);
13                 System. out .println(o);
14                 System. out .println(d);
15                 System. out .println(x);
16
17                 i n t m = 1_000_000;
18                 System. out .println(m);
19         }
20 }
21




2
Bond.java

 1 p a c k a g e java7.coin;
 2
 3 p u b l i c c l a s s Bond {
 4         p u b l i c s t a t i c v o i d main(String[] args) {
 5                 // Courtesy Josh Bloch
 6                 i n t bond =
 7                   0000_____________0000________0000000000000000__000000000000000000+
 8               00000000_________00000000______000000000000000__0000000000000000000+
 9             000____000_______000____000_____000_______0000__00______0+
10           000______000_____000______000_____________0000___00______0+
11         0000______0000___0000______0000___________0000_____0_____0+
12         0000______0000___0000______0000__________0000___________0+
13         0000______0000___0000______0000_________0000__0000000000+
14         0000______0000___0000______0000________0000+
15           000______000_____000______000________0000+
16             000____000_______000____000________00000+
17               00000000_________00000000_______0000000+
18                   0000_____________0000________000000007;
19
20                 System. out .println(bond);
21         }
22 }
23




3
MultiCatch.java

 1   p a c k a g e java7.coin;
 2
 3   i m p o r t java7.coin.exception.Exception1;
 8
 9   p u b l i c c l a s s MultiCatch {
10
11        v o i d callFoo() {
12               try {
13                     foo (); // throws Exception1, Exception2
14               } c a t c h (Exception1 | Exception2 e) {
15                     e.printStackTrace();
16               }
17        }
18
19        v o i d callBar() t h r o w s SubException1, SubException2 {
20               try {
21                     bar (); // throws SubException1, SubException2
22               } c a t c h (SuperException e) {
23                     t h r o w e;
24               }
25        }
26
27        s t a t i c v o i d foo() t h r o w s Exception1, Exception2 {
28        }
29
30        s t a t i c v o i d bar() t h r o w s SubException1, SubException2 {
31        }
32   }
33




4
TryWithResources.java

 1   p a c k a g e java7.coin;
 2
 3   i m p o r t java.io.File;
 7
 8   p u b l i c c l a s s TryWithResources {
 9
10        p u b l i c s t a t i c v o i d main(String[] args) {
11                File file = n e w File("/path/to/file");
12                t r y (Writer writer = n e w FileWriter(file)) {
13                      writer.write("hello!!");
14                } c a t c h (IOException e) {
15                      e.printStackTrace();
16                }
17        }
18   }
19




5
Diamond.java

 1 p a c k a g e java7.coin;
 2
 3 i m p o r t java.util.ArrayList;
 7
 8 p u b l i c c l a s s Diamond {
 9
10         p u b l i c s t a t i c v o i d main(String[] args) {
11                 @SuppressWarnings("unused")
12                 Map<String, List<Integer>> map = n e w HashMap<>();
13         }
14
15         v o i d anonymous() {
16                 // '<>' cannot be used with anonymous classes
17                 List<String> list = n e w ArrayList<>() {}; // 匿名クラス
18     }
19
20     v o i d call() {
21            // The method doSomething(List<String>) in the type Diamond
22            // is not applicable for the arguments (ArrayList<Object>)
23            doSomething(n e w ArrayList<>()); // メソッド呼び出し
                          n
24
25         doOtherthing(n e w ArrayList<>());
                        n
26     }
27
28     v o i d doSomething(List<String> list) {
29     }
30
31     v o i d doOtherthing(List<Object> list) {
32     }
33 }
34




6
Varargs.java

 1   p a c k a g e java7.coin;
 2
 3   i m p o r t java.util.Arrays;
 5
 6   p u b l i c c l a s s Varargs {
 7
 8        p u b l i c s t a t i c v o i d main(String[] args) {
 9                List<String> b = Arrays. asList ("taro", "jiro", "saburo");
10                List<String> s = Arrays. asList ("haruko", "natsuko", "akiko");
11                // Type safety: A generic array of List<String>
12                // is created for a varargs parameter
13                pol (b, s);
14                notPol (b, s);
15        }
16
17        // Type safety: Potential heap pollution
18        // via varargs parameter strLists
19        s t a t i c v o i d pol(List<String>... strLists) {
20                // ...
21        }
22
23        @SafeVarargs
24        s t a t i c v o i d notPol(List<String>... strLists) {
25                // ...
26        }
27   }
28




7
MergeSortSimple.java

 1 p a c k a g e java7.forkjoin;
 2
 3 i m p o r t java.util.Arrays;
 6
 7 p u b l i c c l a s s MergeSortSimple {
 8
 9         p u b l i c s t a t i c v o i d main(String[] args) {
10                 Stopwatch stopwatch = n e w Stopwatch();
11
12                 // ランダムなint配列
13           f i n a l i n t SIZE = 100_000_000;
14           i n t [] ints = n e w i n t [SIZE];
15           f o r (i n t i = 0; i < SIZE; i++) {
                      i
16                   ints[i] = (i n t ) (Math. random () * 100_000);
                                  i
17           }
18           System. out .println("head: " + Arrays. toString (Arys. head (ints)));
19           System. out .println("tail: " + Arrays. toString (Arys. tail (ints)));
20
21           stopwatch.start();
22           ints = sort (ints);
23           stopwatch.stop();
24
25           System. out .println("head: " + Arrays. toString (Arys. head (ints)));
26           System. out .println("tail: " + Arrays. toString (Arys. tail (ints)));
27           System. out .println("time: " + stopwatch);
28      }
29
30      s t a t i c i n t [] sort(i n t [] ints) {
                                     i
31              i f (ints.length <= 2) {
32                    r e t u r n sortDirect (ints);
33              } else {
34                    i n t mid = (i n t ) (ints.length * 0.5);
                                       i
35                    i n t [] left = sort (Arrays. copyOf (ints, mid));
36                    i n t [] right = sort (Arrays. copyOfRange (ints, mid, ints.length));
37                    r e t u r n merge (left, right);
38              }
39      }
40
41      s t a t i c i n t [] sortDirect(i n t [] ints) {
                                              i
42              i f (ints.length <= 1) {
43                      r e t u r n ints;
44              } e l s e i f (ints.length == 2) {
45                      i f (ints[0] > ints[1]) {
46                              i n t g = ints[0];
47                              ints[0] = ints[1];
48                              ints[1] = g;
49                      }
50                      r e t u r n ints;
51              }
52              t h r o w n e w AssertionError();
53      }
54
55      s t a t i c i n t [] merge(i n t [] left, i n t [] right) {
                                    i
56              i n t [] all = n e w i n t [left.length + right.length];
57
58           f o r (i n t i = 0, j = 0, k = 0; i < all.length; i++) {
                     i
59                 i f (j < left.length && k < right.length) {
60                       i n t l = left[j];
61                       i n t r = right[k];
62                       i f (l < r) {
63                             all[i] = l;
64                             j++;
65                       } else {
66                             all[i] = r;
67                             k++;
68                       }
69                 } e l s e i f (j < left.length) {
70                       all[i] = left[j];



8
MergeSortSimple.java

71                    j++;
72              } e l s e i f (k < right.length) {
73                    all[i] = right[k];
74                    k++;
75              } else {
76                    t h r o w n e w AssertionError();
77              }
78         }
79
80         r e t u r n all;
81     }
82 }
83




9
MergeSortByForkJoin.java

 1 p a c k a g e java7.forkjoin;
 2
 3 i m p o r t java.util.Arrays;
 8
 9 p u b l i c c l a s s MergeSortByForkJoin {
10
11         p u b l i c s t a t i c v o i d main(String[] args) {
12                 Stopwatch stopwatch = n e w Stopwatch();
13                 ForkJoinPool pool = n e w ForkJoinPool();
14
15                 // ランダムなint配列
16           f i n a l i n t SIZE = 100_000_000;
17           i n t [] ints = n e w i n t [SIZE];
18           f o r (i n t i = 0; i < SIZE; i++) {
                      i
19                   ints[i] = (i n t ) (Math. random () * 100_000);
                                  i
20           }
21           System. out .println("head: " + Arrays. toString (Arys. head (ints)));
22           System. out .println("tail: " + Arrays. toString (Arys. tail (ints)));
23
24           stopwatch.start();
25           ints = pool.invoke(n e w MergeSort(ints));
                                n
26           stopwatch.stop();
27
28           System. out .println("head: " + Arrays. toString (Arys. head (ints)));
29           System. out .println("tail: " + Arrays. toString (Arys. tail (ints)));
30           System. out .println("time: " + stopwatch);
31      }
32
33      s t a t i c c l a s s MergeSort e x t e n d s RecursiveTask<i n t []> {
                                                                           i
34              p r i v a t e s t a t i c f i n a l l o n g serialVersionUID = 1L;
35
36           i n t [] ints;
37
38           MergeSort(i n t [] ints) {
                           i
39               t h i s .ints = ints;
40           }
41
42           @Override
43           p r o t e c t e d i n t [] compute() {
44                   i f (ints.length <= 2) {
45                           r e t u r n MergeSortSimple. sortDirect (ints);
46                   } else {
47                           i n t mid = (i n t ) (ints.length * 0.5);
                                             i
48                           MergeSort leftSort = n e w MergeSort(Arrays. copyOf (ints, mid));
49                           MergeSort rightSort = n e w MergeSort(Arrays. copyOfRange (ints, mid, ints.length));
50                           leftSort.fork();
51                           i n t [] right = rightSort.compute();
52                           i n t [] left = leftSort.join();
53                           r e t u r n MergeSortSimple. merge (left, right);
54                   }
55           }
56      }
57 }
58




10
MergeSortByExecutor.java

 1 p a c k a g e java7.forkjoin;
 2
 3 i m p o r t java.util.Arrays;
14
15 p u b l i c c l a s s MergeSortByExecutor {
16
17         s t a t i c f i n a l i n t pros = Runtime. getRuntime ().availableProcessors();
18         s t a t i c f i n a l ExecutorService executor = Executors. newFixedThreadPool ( pros );
19
20         p u b l i c s t a t i c v o i d main(String[] args) {
21                 Stopwatch stopwatch = n e w Stopwatch();
22
23                 // ランダムなint配列
24          f i n a l i n t SIZE = 100_000_000;
25          i n t [] ints = n e w i n t [SIZE];
26          f o r (i n t i = 0; i < SIZE; i++) {
                     i
27                  ints[i] = (i n t ) (Math. random () * 100_000);
                                 i
28          }
29          System. out .println("head: " + Arrays. toString (Arys. head (ints)));
30          System. out .println("tail: " + Arrays. toString (Arys. tail (ints)));
31
32          stopwatch.start();
33          ints = divide (ints);
34          stopwatch.stop();
35
36          System. out .println("head: " + Arrays. toString (Arys. head (ints)));
37          System. out .println("tail: " + Arrays. toString (Arys. tail (ints)));
38          System. out .println("time: " + stopwatch);
39
40          executor .shutdown();
41     }
42
43     s t a t i c i n t [] divide(f i n a l i n t [] ints) {
                                               f
44             List<Future<i n t []>> futureList = Lists. newArrayList ();
                                       i
45             f i n a l i n t len = ints.length / pros ;
46             i n t i = 0;
47             f o r (; i < pros ; i++) {
48                     f i n a l i n t fi = i;
49                     futureList.add( executor .submit(n e w Callable<i n t []>() {
                                                                       n           i
50                             @Override
51                             p u b l i c i n t [] call() t h r o w s Exception {
52                                     r e t u r n MergeSortSimple. sort (Arrays. copyOfRange (ints, fi * len, (fi+1) * len));
53                             }}));
54             }
55             f i n a l i n t fi = i;
56             futureList.add( executor .submit(n e w Callable<i n t []>() {
                                                                 n              i
57                     @Override
58                     p u b l i c i n t [] call() t h r o w s Exception {
59                             r e t u r n MergeSortSimple. sort (Arrays. copyOfRange (ints, fi * len, ints.length));
60                     }}));
61
62          try {
63                  Iterator<Future<i n t []>> itr = futureList.iterator();
                                           i
64                  i n t [] left = itr.next().get();
65                  w h i l e (itr.hasNext()) {
66                          i n t [] right = itr.next().get();
67                          left = MergeSortSimple. merge (left, right);
68                  }
69                  r e t u r n left;
70          } c a t c h (InterruptedException | ExecutionException e) {
71                  e.printStackTrace();
72          }
73          t h r o w n e w AssertionError();
74     }
75 }
76




11
BasicUse.java

 1   p a c k a g e java7.nio2;
 2
 3   i m p o r t java.io.BufferedWriter;
11
12   p u b l i c c l a s s BasicUse {
13
14        p u b l i c s t a t i c v o i d main(String[] args) {
15                FileSystem fs = FileSystems. getDefault ();
16                Path path = fs.getPath("/path", "to", "file");
17
18              t r y (BufferedWriter bw = Files. newBufferedWriter (path,
19                        StandardCharsets. UTF_8 , StandardOpenOption. CREATE )) {
20
21                   bw.write("Oh, NIO.2 !!");
22
23              } c a t c h (IOException e) {
24                    e.printStackTrace();
25              }
26        }
27   }
28




12
FilesSample.java

 1   p a c k a g e java7.nio2;
 2
 3   i m p o r t java.io.IOException;
 9
10   p u b l i c c l a s s FilesSample {
11
12        p u b l i c s t a t i c v o i d main(String[] args) {
13                Path dir = Paths. get ("/path", "to");
14                Path path1 = Paths. get ("/path", "to", "file1");
15                Path path2 = Paths. get ("/path", "to", "file2");
16                Path link = Paths. get ("/path", "to", "link");
17
18             try {
19                 Files. createFile (path1);
20                 Files. createSymbolicLink (link, path1);
21                 Files. copy (path1, path2, StandardCopyOption. COPY_ATTRIBUTES );
22                 Files. move (path1, path2, StandardCopyOption. ATOMIC_MOVE );
23                 @SuppressWarnings("unused")
24                 b y t e [] bytes = Files. readAllBytes (path2);
25
26                   t r y (DirectoryStream<Path> ds = Files. newDirectoryStream (dir)) {
27                         f o r (Path path : ds) {
28                               System. out .println(path);
29                         }
30                   }
31             } c a t c h (IOException e) {
32                   e.printStackTrace();
33             }
34        }
35   }
36




13
AttributeViewSample.java

 1   p a c k a g e java7.nio2;
 2
 3   i m p o r t java.io.IOException;
11
12   p u b l i c c l a s s AttributeViewSample {
13
14        p u b l i c s t a t i c v o i d main(String[] args) {
15                Path path = Paths. get ("/path", "to", "file");
16                BasicFileAttributeView view
17                      = Files. getFileAttributeView (path, BasicFileAttributeView.c l a s s );
                                                                                      c
18                PosixFileAttributeView view2
19                      = Files. getFileAttributeView (path, PosixFileAttributeView.c l a s s );
                                                                                      c
20                try {
21                      i f (view != n u l l ) {
22                              BasicFileAttributes attributes = view.readAttributes();
23                              System. out .println(attributes.creationTime());
24                              System. out .println(attributes.lastModifiedTime());
25                              System. out .println(attributes.lastAccessTime());
26                      }
27                      i f (view2 != n u l l ) {
28                              PosixFileAttributes attributes2 = view2.readAttributes();
29                              System. out .println(attributes2.owner());
30                              System. out .println(attributes2.group());
31                              System. out .println(attributes2.permissions());
32                      }
33                } c a t c h (IOException e) {
34                      e.printStackTrace();
35                }
36        }
37   }
38




14
FileVisitorSample.java

 1   p a c k a g e java7.nio2;
 2
 3   i m p o r t java.io.IOException;
10
11   p u b l i c c l a s s FileVisitorSample {
12
13        p u b l i c s t a t i c v o i d main(String[] args) {
14                try {
15                      Path dir = Paths. get ("/path", "to", "dir");
16                      Files. walkFileTree (dir, n e w SimpleFileVisitor<Path>() {
17                              @Override
18                              p u b l i c FileVisitResult preVisitDirectory(Path dir,
19                                              BasicFileAttributes attrs) t h r o w s IOException {
20                                      System. out .println("preVisitDir: " + dir);
21                                      r e t u r n FileVisitResult. CONTINUE ;
22                              }
23
24                        @Override
25                        p u b l i c FileVisitResult postVisitDirectory(Path dir,
26                                        IOException exc) t h r o w s IOException {
27                                System. out .println("postVisitDir: " + dir);
28                                r e t u r n FileVisitResult. CONTINUE ;
29                        }
30
31                        @Override
32                        p u b l i c FileVisitResult visitFile(Path file,
33                                        BasicFileAttributes attrs) t h r o w s IOException {
34                                System. out .println("visitFile: " + file);
35                                r e t u r n FileVisitResult. CONTINUE ;
36                        }
37                   });
38             } c a t c h (IOException e) {
39                   e.printStackTrace();
40             }
41        }
42   }
43




15
WatchServiceSample.java

 1 p a c k a g e java7.nio2;
 2
 3 i m p o r t java.io.IOException;
11
12 p u b l i c c l a s s WatchServiceSample {
13
14         p u b l i c s t a t i c v o i d main(String[] args) {
15                 FileSystem fs = FileSystems. getDefault ();
16                 Path dir = fs.getPath("/path", "to", "dir");
17                 try {
18                       WatchService watcher = fs.newWatchService();
19                       dir.register(watcher,
20                                     StandardWatchEventKinds. ENTRY_CREATE ,
21                                     StandardWatchEventKinds. ENTRY_MODIFY ,
22                                     StandardWatchEventKinds. ENTRY_DELETE );
23                       b o o l e a n valid;
24                       do {
25                               WatchKey key = watcher.take(); // ブロック
26                       f o r (WatchEvent<?> event : key.pollEvents()) {
27                             i f (event.kind() == StandardWatchEventKinds. OVERFLOW ) {
28                                  System. out .println("overflow!!");
29                             } else {
30                                  System. out .println(
31                                           event.kind() + " : " + event.context());
32                             }
33                       }
34                       valid = key.reset();
35                 } w h i l e (valid);
36           } c a t c h (IOException | InterruptedException e) {
37                 e.printStackTrace();
38           }
39      }
40 }
41




16
AsynchronousSample.java

 1 p a c k a g e java7.nio2;
 2
 3 i m p o r t java.io.FileInputStream;
15
16 p u b l i c c l a s s AsynchronousSample {
17
18         p u b l i c s t a t i c v o i d main(String[] args) {
19                 t r y (InputStream in = n e w FileInputStream(
20                                 "/path/to/largeFile");) {
21                         write (in).await();
22                 } c a t c h (IOException | InterruptedException e) {
23                         e.printStackTrace();
24                 }
25         }
26
27         s t a t i c CountDownLatch write(InputStream in) {
28                 ReadableByteChannel rbc = Channels. newChannel (in);
29                 ByteBuffer buf = ByteBuffer. allocate (0x1000);
30
31                 Path file = Paths. get ("/path", "to", "file");
32                 CountDownLatch latch = n e w CountDownLatch(1);
33                 try {
34                         AsynchronousFileChannel afc =
35                                       AsynchronousFileChannel. open (file,
36                                                 StandardOpenOption. CREATE ,
37                                                 StandardOpenOption. WRITE );
38                         i n t len;
39                         i f ((len = rbc.read(buf)) > -1) {
40                                 buf.flip();
41                                 afc.write(buf, 0, buf, n e w WriteContinuing(rbc, afc, len, latch));
42                         }
43                 } c a t c h (IOException e) {
44                         e.printStackTrace();
45                         latch.countDown();
46                 }
47                 r e t u r n latch;
48         }
49
50         s t a t i c c l a s s WriteContinuing i m p l e m e n t s CompletionHandler<Integer, ByteBuffer> {
51                 p r i v a t e f i n a l ReadableByteChannel rbc;
52                 p r i v a t e f i n a l AsynchronousFileChannel afc;
53                 p r i v a t e f i n a l i n t pos;
54                 p r i v a t e f i n a l CountDownLatch latch;
55
56                 p u b l i c WriteContinuing(
57                                 ReadableByteChannel rbc,
58                                 AsynchronousFileChannel afc,
59                                 i n t position,
60                                 CountDownLatch latch) {
61                         t h i s .rbc = rbc;
62                         t h i s .afc = afc;
63                         t h i s .pos = position;
64                         t h i s .latch = latch;
65                 }
66
67                 @Override
68                 p u b l i c v o i d completed(Integer result, ByteBuffer buf) {
69                         buf.clear();
70                         try{
71                                 i n t len;
72                                 i f ((len = rbc.read(buf)) > -1) {
73                                       buf.flip();
74                                       afc.write(buf, pos, buf, n e w WriteContinuing(rbc, afc, pos + len, latch));
75                                 } else {
76                                       System. out .println("completed!");
77                                       afc.close();
78                                       latch.countDown();
79                                 }



17
AsynchronousSample.java

80             } c a t c h (IOException e) {
81                   e.printStackTrace();
82                   latch.countDown();
83             }
84         }
85
86         @Override
87         p u b l i c v o i d failed(Throwable exc, ByteBuffer buf) {
88                 exc.printStackTrace();
89         }
90     }
91 }
92




18
Puzzle.java

 1   p a c k a g e java7.puzzle;
 2
 3   i m p o r t java.util.Arrays;
 5
 6   p u b l i c c l a s s Puzzle {
 7
 8        p u b l i c s t a t i c v o i d main(String[] args) {
 9                List<String>[] stringLists = n e w List<String>[10];
10                stringLists[0] = Arrays. asList ("first string!");
11                Object[] array = stringLists;
12                array[0] = Arrays. asList (0);
13                System. out .println(stringLists[0].get(0));
14        }
15   }
16




19
index.xhtml

 1   <?xml version= "1.0" encoding= "UTF-8" ?>
 2   <!DOCTYPE html>
 3   <html xmlns:h= "http://java.sun.com/jsf/html" >
 4   <head>
 5     <title>Greeting</title>
 6   </head>
 7   <h:body>
 8     #{myBean.greeting}
 9   </h:body>
10   </html>




20
MyBean.java

 1
 2
 3   i m p o r t javax.inject.Inject;
 5
 6   @Named
 7   p u b l i c c l a s s MyBean {
 8           @Inject
 9           p r i v a t e MyService myService;
10
11        p u b l i c String getGreeting() {
12                r e t u r n myService.getGreeting();
13        }
14   }
15




21
MyService.java

 1
 2
 3   i m p o r t javax.annotation.ManagedBean;
 4
 5   @ManagedBean
 6   p u b l i c c l a s s MyService {
 7           p u b l i c String getGreeting() {
 8                   r e t u r n "Hello JavaEE6!!";
 9           }
10   }
11




22
beans.xml

1




23
faces-config.xml

1




24
Notes




This work is licensed under the Creative Commons Attribution-NonCommercial 3.0 Unported
License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/.




  25

Java, Up to Date Sources

  • 1.
    Java, Up toDate Sources Copyright © 2012 Akira Koyasu Some rights reserved.
  • 2.
    StringInSwitch.java 1 p a c k a g e java7.coin; 2 3 p u b l i c c l a s s StringInSwitch { 4 5 p u b l i c s t a t i c v o i d main(String[] args) { 6 String flag = "aaa"; 7 s w i t c h (flag) { 8 c a s e "aaa": 9 System. out .println("aaa"); 10 break; 11 c a s e "bbb": 12 System. out .println("bbb"); 13 break; 14 c a s e "ccc": 15 System. out .println("ccc"); 16 break; 17 } 18 } 19 } 20 1 1
  • 3.
    NumericLiteral.java 1 pa c k a g e java7.coin; 2 3 p u b l i c c l a s s NumericLiteral { 4 5 p u b l i c s t a t i c v o i d main(String[] args) { 6 i n t b = 0b1110; // binary (new!) 7 8 i n t o = 016; // octal 9 i n t d = 14; // decimal 10 i n t x = 0xE; // hexadecimal 11 12 System. out .println(b); 13 System. out .println(o); 14 System. out .println(d); 15 System. out .println(x); 16 17 i n t m = 1_000_000; 18 System. out .println(m); 19 } 20 } 21 2
  • 4.
    Bond.java 1 pa c k a g e java7.coin; 2 3 p u b l i c c l a s s Bond { 4 p u b l i c s t a t i c v o i d main(String[] args) { 5 // Courtesy Josh Bloch 6 i n t bond = 7 0000_____________0000________0000000000000000__000000000000000000+ 8 00000000_________00000000______000000000000000__0000000000000000000+ 9 000____000_______000____000_____000_______0000__00______0+ 10 000______000_____000______000_____________0000___00______0+ 11 0000______0000___0000______0000___________0000_____0_____0+ 12 0000______0000___0000______0000__________0000___________0+ 13 0000______0000___0000______0000_________0000__0000000000+ 14 0000______0000___0000______0000________0000+ 15 000______000_____000______000________0000+ 16 000____000_______000____000________00000+ 17 00000000_________00000000_______0000000+ 18 0000_____________0000________000000007; 19 20 System. out .println(bond); 21 } 22 } 23 3
  • 5.
    MultiCatch.java 1 p a c k a g e java7.coin; 2 3 i m p o r t java7.coin.exception.Exception1; 8 9 p u b l i c c l a s s MultiCatch { 10 11 v o i d callFoo() { 12 try { 13 foo (); // throws Exception1, Exception2 14 } c a t c h (Exception1 | Exception2 e) { 15 e.printStackTrace(); 16 } 17 } 18 19 v o i d callBar() t h r o w s SubException1, SubException2 { 20 try { 21 bar (); // throws SubException1, SubException2 22 } c a t c h (SuperException e) { 23 t h r o w e; 24 } 25 } 26 27 s t a t i c v o i d foo() t h r o w s Exception1, Exception2 { 28 } 29 30 s t a t i c v o i d bar() t h r o w s SubException1, SubException2 { 31 } 32 } 33 4
  • 6.
    TryWithResources.java 1 p a c k a g e java7.coin; 2 3 i m p o r t java.io.File; 7 8 p u b l i c c l a s s TryWithResources { 9 10 p u b l i c s t a t i c v o i d main(String[] args) { 11 File file = n e w File("/path/to/file"); 12 t r y (Writer writer = n e w FileWriter(file)) { 13 writer.write("hello!!"); 14 } c a t c h (IOException e) { 15 e.printStackTrace(); 16 } 17 } 18 } 19 5
  • 7.
    Diamond.java 1 pa c k a g e java7.coin; 2 3 i m p o r t java.util.ArrayList; 7 8 p u b l i c c l a s s Diamond { 9 10 p u b l i c s t a t i c v o i d main(String[] args) { 11 @SuppressWarnings("unused") 12 Map<String, List<Integer>> map = n e w HashMap<>(); 13 } 14 15 v o i d anonymous() { 16 // '<>' cannot be used with anonymous classes 17 List<String> list = n e w ArrayList<>() {}; // 匿名クラス 18 } 19 20 v o i d call() { 21 // The method doSomething(List<String>) in the type Diamond 22 // is not applicable for the arguments (ArrayList<Object>) 23 doSomething(n e w ArrayList<>()); // メソッド呼び出し n 24 25 doOtherthing(n e w ArrayList<>()); n 26 } 27 28 v o i d doSomething(List<String> list) { 29 } 30 31 v o i d doOtherthing(List<Object> list) { 32 } 33 } 34 6
  • 8.
    Varargs.java 1 p a c k a g e java7.coin; 2 3 i m p o r t java.util.Arrays; 5 6 p u b l i c c l a s s Varargs { 7 8 p u b l i c s t a t i c v o i d main(String[] args) { 9 List<String> b = Arrays. asList ("taro", "jiro", "saburo"); 10 List<String> s = Arrays. asList ("haruko", "natsuko", "akiko"); 11 // Type safety: A generic array of List<String> 12 // is created for a varargs parameter 13 pol (b, s); 14 notPol (b, s); 15 } 16 17 // Type safety: Potential heap pollution 18 // via varargs parameter strLists 19 s t a t i c v o i d pol(List<String>... strLists) { 20 // ... 21 } 22 23 @SafeVarargs 24 s t a t i c v o i d notPol(List<String>... strLists) { 25 // ... 26 } 27 } 28 7
  • 9.
    MergeSortSimple.java 1 pa c k a g e java7.forkjoin; 2 3 i m p o r t java.util.Arrays; 6 7 p u b l i c c l a s s MergeSortSimple { 8 9 p u b l i c s t a t i c v o i d main(String[] args) { 10 Stopwatch stopwatch = n e w Stopwatch(); 11 12 // ランダムなint配列 13 f i n a l i n t SIZE = 100_000_000; 14 i n t [] ints = n e w i n t [SIZE]; 15 f o r (i n t i = 0; i < SIZE; i++) { i 16 ints[i] = (i n t ) (Math. random () * 100_000); i 17 } 18 System. out .println("head: " + Arrays. toString (Arys. head (ints))); 19 System. out .println("tail: " + Arrays. toString (Arys. tail (ints))); 20 21 stopwatch.start(); 22 ints = sort (ints); 23 stopwatch.stop(); 24 25 System. out .println("head: " + Arrays. toString (Arys. head (ints))); 26 System. out .println("tail: " + Arrays. toString (Arys. tail (ints))); 27 System. out .println("time: " + stopwatch); 28 } 29 30 s t a t i c i n t [] sort(i n t [] ints) { i 31 i f (ints.length <= 2) { 32 r e t u r n sortDirect (ints); 33 } else { 34 i n t mid = (i n t ) (ints.length * 0.5); i 35 i n t [] left = sort (Arrays. copyOf (ints, mid)); 36 i n t [] right = sort (Arrays. copyOfRange (ints, mid, ints.length)); 37 r e t u r n merge (left, right); 38 } 39 } 40 41 s t a t i c i n t [] sortDirect(i n t [] ints) { i 42 i f (ints.length <= 1) { 43 r e t u r n ints; 44 } e l s e i f (ints.length == 2) { 45 i f (ints[0] > ints[1]) { 46 i n t g = ints[0]; 47 ints[0] = ints[1]; 48 ints[1] = g; 49 } 50 r e t u r n ints; 51 } 52 t h r o w n e w AssertionError(); 53 } 54 55 s t a t i c i n t [] merge(i n t [] left, i n t [] right) { i 56 i n t [] all = n e w i n t [left.length + right.length]; 57 58 f o r (i n t i = 0, j = 0, k = 0; i < all.length; i++) { i 59 i f (j < left.length && k < right.length) { 60 i n t l = left[j]; 61 i n t r = right[k]; 62 i f (l < r) { 63 all[i] = l; 64 j++; 65 } else { 66 all[i] = r; 67 k++; 68 } 69 } e l s e i f (j < left.length) { 70 all[i] = left[j]; 8
  • 10.
    MergeSortSimple.java 71 j++; 72 } e l s e i f (k < right.length) { 73 all[i] = right[k]; 74 k++; 75 } else { 76 t h r o w n e w AssertionError(); 77 } 78 } 79 80 r e t u r n all; 81 } 82 } 83 9
  • 11.
    MergeSortByForkJoin.java 1 pa c k a g e java7.forkjoin; 2 3 i m p o r t java.util.Arrays; 8 9 p u b l i c c l a s s MergeSortByForkJoin { 10 11 p u b l i c s t a t i c v o i d main(String[] args) { 12 Stopwatch stopwatch = n e w Stopwatch(); 13 ForkJoinPool pool = n e w ForkJoinPool(); 14 15 // ランダムなint配列 16 f i n a l i n t SIZE = 100_000_000; 17 i n t [] ints = n e w i n t [SIZE]; 18 f o r (i n t i = 0; i < SIZE; i++) { i 19 ints[i] = (i n t ) (Math. random () * 100_000); i 20 } 21 System. out .println("head: " + Arrays. toString (Arys. head (ints))); 22 System. out .println("tail: " + Arrays. toString (Arys. tail (ints))); 23 24 stopwatch.start(); 25 ints = pool.invoke(n e w MergeSort(ints)); n 26 stopwatch.stop(); 27 28 System. out .println("head: " + Arrays. toString (Arys. head (ints))); 29 System. out .println("tail: " + Arrays. toString (Arys. tail (ints))); 30 System. out .println("time: " + stopwatch); 31 } 32 33 s t a t i c c l a s s MergeSort e x t e n d s RecursiveTask<i n t []> { i 34 p r i v a t e s t a t i c f i n a l l o n g serialVersionUID = 1L; 35 36 i n t [] ints; 37 38 MergeSort(i n t [] ints) { i 39 t h i s .ints = ints; 40 } 41 42 @Override 43 p r o t e c t e d i n t [] compute() { 44 i f (ints.length <= 2) { 45 r e t u r n MergeSortSimple. sortDirect (ints); 46 } else { 47 i n t mid = (i n t ) (ints.length * 0.5); i 48 MergeSort leftSort = n e w MergeSort(Arrays. copyOf (ints, mid)); 49 MergeSort rightSort = n e w MergeSort(Arrays. copyOfRange (ints, mid, ints.length)); 50 leftSort.fork(); 51 i n t [] right = rightSort.compute(); 52 i n t [] left = leftSort.join(); 53 r e t u r n MergeSortSimple. merge (left, right); 54 } 55 } 56 } 57 } 58 10
  • 12.
    MergeSortByExecutor.java 1 pa c k a g e java7.forkjoin; 2 3 i m p o r t java.util.Arrays; 14 15 p u b l i c c l a s s MergeSortByExecutor { 16 17 s t a t i c f i n a l i n t pros = Runtime. getRuntime ().availableProcessors(); 18 s t a t i c f i n a l ExecutorService executor = Executors. newFixedThreadPool ( pros ); 19 20 p u b l i c s t a t i c v o i d main(String[] args) { 21 Stopwatch stopwatch = n e w Stopwatch(); 22 23 // ランダムなint配列 24 f i n a l i n t SIZE = 100_000_000; 25 i n t [] ints = n e w i n t [SIZE]; 26 f o r (i n t i = 0; i < SIZE; i++) { i 27 ints[i] = (i n t ) (Math. random () * 100_000); i 28 } 29 System. out .println("head: " + Arrays. toString (Arys. head (ints))); 30 System. out .println("tail: " + Arrays. toString (Arys. tail (ints))); 31 32 stopwatch.start(); 33 ints = divide (ints); 34 stopwatch.stop(); 35 36 System. out .println("head: " + Arrays. toString (Arys. head (ints))); 37 System. out .println("tail: " + Arrays. toString (Arys. tail (ints))); 38 System. out .println("time: " + stopwatch); 39 40 executor .shutdown(); 41 } 42 43 s t a t i c i n t [] divide(f i n a l i n t [] ints) { f 44 List<Future<i n t []>> futureList = Lists. newArrayList (); i 45 f i n a l i n t len = ints.length / pros ; 46 i n t i = 0; 47 f o r (; i < pros ; i++) { 48 f i n a l i n t fi = i; 49 futureList.add( executor .submit(n e w Callable<i n t []>() { n i 50 @Override 51 p u b l i c i n t [] call() t h r o w s Exception { 52 r e t u r n MergeSortSimple. sort (Arrays. copyOfRange (ints, fi * len, (fi+1) * len)); 53 }})); 54 } 55 f i n a l i n t fi = i; 56 futureList.add( executor .submit(n e w Callable<i n t []>() { n i 57 @Override 58 p u b l i c i n t [] call() t h r o w s Exception { 59 r e t u r n MergeSortSimple. sort (Arrays. copyOfRange (ints, fi * len, ints.length)); 60 }})); 61 62 try { 63 Iterator<Future<i n t []>> itr = futureList.iterator(); i 64 i n t [] left = itr.next().get(); 65 w h i l e (itr.hasNext()) { 66 i n t [] right = itr.next().get(); 67 left = MergeSortSimple. merge (left, right); 68 } 69 r e t u r n left; 70 } c a t c h (InterruptedException | ExecutionException e) { 71 e.printStackTrace(); 72 } 73 t h r o w n e w AssertionError(); 74 } 75 } 76 11
  • 13.
    BasicUse.java 1 p a c k a g e java7.nio2; 2 3 i m p o r t java.io.BufferedWriter; 11 12 p u b l i c c l a s s BasicUse { 13 14 p u b l i c s t a t i c v o i d main(String[] args) { 15 FileSystem fs = FileSystems. getDefault (); 16 Path path = fs.getPath("/path", "to", "file"); 17 18 t r y (BufferedWriter bw = Files. newBufferedWriter (path, 19 StandardCharsets. UTF_8 , StandardOpenOption. CREATE )) { 20 21 bw.write("Oh, NIO.2 !!"); 22 23 } c a t c h (IOException e) { 24 e.printStackTrace(); 25 } 26 } 27 } 28 12
  • 14.
    FilesSample.java 1 p a c k a g e java7.nio2; 2 3 i m p o r t java.io.IOException; 9 10 p u b l i c c l a s s FilesSample { 11 12 p u b l i c s t a t i c v o i d main(String[] args) { 13 Path dir = Paths. get ("/path", "to"); 14 Path path1 = Paths. get ("/path", "to", "file1"); 15 Path path2 = Paths. get ("/path", "to", "file2"); 16 Path link = Paths. get ("/path", "to", "link"); 17 18 try { 19 Files. createFile (path1); 20 Files. createSymbolicLink (link, path1); 21 Files. copy (path1, path2, StandardCopyOption. COPY_ATTRIBUTES ); 22 Files. move (path1, path2, StandardCopyOption. ATOMIC_MOVE ); 23 @SuppressWarnings("unused") 24 b y t e [] bytes = Files. readAllBytes (path2); 25 26 t r y (DirectoryStream<Path> ds = Files. newDirectoryStream (dir)) { 27 f o r (Path path : ds) { 28 System. out .println(path); 29 } 30 } 31 } c a t c h (IOException e) { 32 e.printStackTrace(); 33 } 34 } 35 } 36 13
  • 15.
    AttributeViewSample.java 1 p a c k a g e java7.nio2; 2 3 i m p o r t java.io.IOException; 11 12 p u b l i c c l a s s AttributeViewSample { 13 14 p u b l i c s t a t i c v o i d main(String[] args) { 15 Path path = Paths. get ("/path", "to", "file"); 16 BasicFileAttributeView view 17 = Files. getFileAttributeView (path, BasicFileAttributeView.c l a s s ); c 18 PosixFileAttributeView view2 19 = Files. getFileAttributeView (path, PosixFileAttributeView.c l a s s ); c 20 try { 21 i f (view != n u l l ) { 22 BasicFileAttributes attributes = view.readAttributes(); 23 System. out .println(attributes.creationTime()); 24 System. out .println(attributes.lastModifiedTime()); 25 System. out .println(attributes.lastAccessTime()); 26 } 27 i f (view2 != n u l l ) { 28 PosixFileAttributes attributes2 = view2.readAttributes(); 29 System. out .println(attributes2.owner()); 30 System. out .println(attributes2.group()); 31 System. out .println(attributes2.permissions()); 32 } 33 } c a t c h (IOException e) { 34 e.printStackTrace(); 35 } 36 } 37 } 38 14
  • 16.
    FileVisitorSample.java 1 p a c k a g e java7.nio2; 2 3 i m p o r t java.io.IOException; 10 11 p u b l i c c l a s s FileVisitorSample { 12 13 p u b l i c s t a t i c v o i d main(String[] args) { 14 try { 15 Path dir = Paths. get ("/path", "to", "dir"); 16 Files. walkFileTree (dir, n e w SimpleFileVisitor<Path>() { 17 @Override 18 p u b l i c FileVisitResult preVisitDirectory(Path dir, 19 BasicFileAttributes attrs) t h r o w s IOException { 20 System. out .println("preVisitDir: " + dir); 21 r e t u r n FileVisitResult. CONTINUE ; 22 } 23 24 @Override 25 p u b l i c FileVisitResult postVisitDirectory(Path dir, 26 IOException exc) t h r o w s IOException { 27 System. out .println("postVisitDir: " + dir); 28 r e t u r n FileVisitResult. CONTINUE ; 29 } 30 31 @Override 32 p u b l i c FileVisitResult visitFile(Path file, 33 BasicFileAttributes attrs) t h r o w s IOException { 34 System. out .println("visitFile: " + file); 35 r e t u r n FileVisitResult. CONTINUE ; 36 } 37 }); 38 } c a t c h (IOException e) { 39 e.printStackTrace(); 40 } 41 } 42 } 43 15
  • 17.
    WatchServiceSample.java 1 pa c k a g e java7.nio2; 2 3 i m p o r t java.io.IOException; 11 12 p u b l i c c l a s s WatchServiceSample { 13 14 p u b l i c s t a t i c v o i d main(String[] args) { 15 FileSystem fs = FileSystems. getDefault (); 16 Path dir = fs.getPath("/path", "to", "dir"); 17 try { 18 WatchService watcher = fs.newWatchService(); 19 dir.register(watcher, 20 StandardWatchEventKinds. ENTRY_CREATE , 21 StandardWatchEventKinds. ENTRY_MODIFY , 22 StandardWatchEventKinds. ENTRY_DELETE ); 23 b o o l e a n valid; 24 do { 25 WatchKey key = watcher.take(); // ブロック 26 f o r (WatchEvent<?> event : key.pollEvents()) { 27 i f (event.kind() == StandardWatchEventKinds. OVERFLOW ) { 28 System. out .println("overflow!!"); 29 } else { 30 System. out .println( 31 event.kind() + " : " + event.context()); 32 } 33 } 34 valid = key.reset(); 35 } w h i l e (valid); 36 } c a t c h (IOException | InterruptedException e) { 37 e.printStackTrace(); 38 } 39 } 40 } 41 16
  • 18.
    AsynchronousSample.java 1 pa c k a g e java7.nio2; 2 3 i m p o r t java.io.FileInputStream; 15 16 p u b l i c c l a s s AsynchronousSample { 17 18 p u b l i c s t a t i c v o i d main(String[] args) { 19 t r y (InputStream in = n e w FileInputStream( 20 "/path/to/largeFile");) { 21 write (in).await(); 22 } c a t c h (IOException | InterruptedException e) { 23 e.printStackTrace(); 24 } 25 } 26 27 s t a t i c CountDownLatch write(InputStream in) { 28 ReadableByteChannel rbc = Channels. newChannel (in); 29 ByteBuffer buf = ByteBuffer. allocate (0x1000); 30 31 Path file = Paths. get ("/path", "to", "file"); 32 CountDownLatch latch = n e w CountDownLatch(1); 33 try { 34 AsynchronousFileChannel afc = 35 AsynchronousFileChannel. open (file, 36 StandardOpenOption. CREATE , 37 StandardOpenOption. WRITE ); 38 i n t len; 39 i f ((len = rbc.read(buf)) > -1) { 40 buf.flip(); 41 afc.write(buf, 0, buf, n e w WriteContinuing(rbc, afc, len, latch)); 42 } 43 } c a t c h (IOException e) { 44 e.printStackTrace(); 45 latch.countDown(); 46 } 47 r e t u r n latch; 48 } 49 50 s t a t i c c l a s s WriteContinuing i m p l e m e n t s CompletionHandler<Integer, ByteBuffer> { 51 p r i v a t e f i n a l ReadableByteChannel rbc; 52 p r i v a t e f i n a l AsynchronousFileChannel afc; 53 p r i v a t e f i n a l i n t pos; 54 p r i v a t e f i n a l CountDownLatch latch; 55 56 p u b l i c WriteContinuing( 57 ReadableByteChannel rbc, 58 AsynchronousFileChannel afc, 59 i n t position, 60 CountDownLatch latch) { 61 t h i s .rbc = rbc; 62 t h i s .afc = afc; 63 t h i s .pos = position; 64 t h i s .latch = latch; 65 } 66 67 @Override 68 p u b l i c v o i d completed(Integer result, ByteBuffer buf) { 69 buf.clear(); 70 try{ 71 i n t len; 72 i f ((len = rbc.read(buf)) > -1) { 73 buf.flip(); 74 afc.write(buf, pos, buf, n e w WriteContinuing(rbc, afc, pos + len, latch)); 75 } else { 76 System. out .println("completed!"); 77 afc.close(); 78 latch.countDown(); 79 } 17
  • 19.
    AsynchronousSample.java 80 } c a t c h (IOException e) { 81 e.printStackTrace(); 82 latch.countDown(); 83 } 84 } 85 86 @Override 87 p u b l i c v o i d failed(Throwable exc, ByteBuffer buf) { 88 exc.printStackTrace(); 89 } 90 } 91 } 92 18
  • 20.
    Puzzle.java 1 p a c k a g e java7.puzzle; 2 3 i m p o r t java.util.Arrays; 5 6 p u b l i c c l a s s Puzzle { 7 8 p u b l i c s t a t i c v o i d main(String[] args) { 9 List<String>[] stringLists = n e w List<String>[10]; 10 stringLists[0] = Arrays. asList ("first string!"); 11 Object[] array = stringLists; 12 array[0] = Arrays. asList (0); 13 System. out .println(stringLists[0].get(0)); 14 } 15 } 16 19
  • 21.
    index.xhtml 1 <?xml version= "1.0" encoding= "UTF-8" ?> 2 <!DOCTYPE html> 3 <html xmlns:h= "http://java.sun.com/jsf/html" > 4 <head> 5 <title>Greeting</title> 6 </head> 7 <h:body> 8 #{myBean.greeting} 9 </h:body> 10 </html> 20
  • 22.
    MyBean.java 1 2 3 i m p o r t javax.inject.Inject; 5 6 @Named 7 p u b l i c c l a s s MyBean { 8 @Inject 9 p r i v a t e MyService myService; 10 11 p u b l i c String getGreeting() { 12 r e t u r n myService.getGreeting(); 13 } 14 } 15 21
  • 23.
    MyService.java 1 2 3 i m p o r t javax.annotation.ManagedBean; 4 5 @ManagedBean 6 p u b l i c c l a s s MyService { 7 p u b l i c String getGreeting() { 8 r e t u r n "Hello JavaEE6!!"; 9 } 10 } 11 22
  • 24.
  • 25.
  • 26.
    Notes This work islicensed under the Creative Commons Attribution-NonCommercial 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/. 25