26
Java, Up to Date Sources Copyright © 2012 Akira Koyasu Some rights reserved.

Java, Up to Date Sources

Embed Size (px)

DESCRIPTION

Source codes of the Presentation "Java, Up to Date", http://www.slideshare.net/akirakoyasu/java-up-to-date

Citation preview

Page 1: Java, Up to Date Sources

Java, Up to Date

Sources

Copyright © 2012 Akira Koyasu Some rights reserved.

Page 2: Java, Up to Date Sources

StringInSwitch.java

1 ppaacckkaaggee java7.coin;23 ppuubblliicc ccllaassss StringInSwitch {45 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {6 String flag = "aaa";7 sswwiittcchh (flag) {8 ccaassee "aaa":9 System.out.println("aaa");

10 bbrreeaakk;11 ccaassee "bbb":12 System.out.println("bbb");13 bbrreeaakk;14 ccaassee "ccc":15 System.out.println("ccc");16 bbrreeaakk;17 }18 }19 }20 1

1

Page 3: Java, Up to Date Sources

NumericLiteral.java

1 ppaacckkaaggee java7.coin;23 ppuubblliicc ccllaassss NumericLiteral {45 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {6 iinntt b = 0b1110; // binary (new!)78 iinntt o = 016; // octal9 iinntt d = 14; // decimal

10 iinntt x = 0xE; // hexadecimal1112 System.out.println(b);13 System.out.println(o);14 System.out.println(d);15 System.out.println(x);1617 iinntt m = 1_000_000;18 System.out.println(m);19 }20 }21

2

Page 4: Java, Up to Date Sources

Bond.java

1 ppaacckkaaggee java7.coin;23 ppuubblliicc ccllaassss Bond {4 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {5 // Courtesy Josh Bloch6 iinntt 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;1920 System.out.println(bond);21 }22 }23

3

Page 5: Java, Up to Date Sources

MultiCatch.java

1 ppaacckkaaggee java7.coin;23 iimmppoorrtt java7.coin.exception.Exception1;89 ppuubblliicc ccllaassss MultiCatch {

1011 vvooiidd callFoo() {12 ttrryy {13 foo(); // throws Exception1, Exception214 } ccaattcchh (Exception1 | Exception2 e) {15 e.printStackTrace();16 }17 }1819 vvooiidd callBar() tthhrroowwss SubException1, SubException2 {20 ttrryy {21 bar(); // throws SubException1, SubException222 } ccaattcchh (SuperException e) {23 tthhrrooww e;24 }25 }2627 ssttaattiicc vvooiidd foo() tthhrroowwss Exception1, Exception2 {28 }2930 ssttaattiicc vvooiidd bar() tthhrroowwss SubException1, SubException2 {31 }32 }33

4

Page 6: Java, Up to Date Sources

TryWithResources.java

1 ppaacckkaaggee java7.coin;23 iimmppoorrtt java.io.File;78 ppuubblliicc ccllaassss TryWithResources {9

10 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {11 File file = nneeww File("/path/to/file");12 ttrryy (Writer writer = nneeww FileWriter(file)) {13 writer.write("hello!!");14 } ccaattcchh (IOException e) {15 e.printStackTrace();16 }17 }18 }19

5

Page 7: Java, Up to Date Sources

Diamond.java

1 ppaacckkaaggee java7.coin;23 iimmppoorrtt java.util.ArrayList;78 ppuubblliicc ccllaassss Diamond {9

10 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {11 @SuppressWarnings("unused")12 Map<String, List<Integer>> map = nneeww HashMap<>();13 }1415 vvooiidd anonymous() {16 // '<>' cannot be used with anonymous classes17 List<String> list = nneeww ArrayList<>() {}; // 匿名クラス18 }1920 vvooiidd call() {21 // The method doSomething(List<String>) in the type Diamond22 // is not applicable for the arguments (ArrayList<Object>)23 doSomething(nneeww ArrayList<>()); // メソッド呼び出し2425 doOtherthing(nneeww ArrayList<>());26 }2728 vvooiidd doSomething(List<String> list) {29 }3031 vvooiidd doOtherthing(List<Object> list) {32 }33 }34

6

Page 8: Java, Up to Date Sources

Varargs.java

1 ppaacckkaaggee java7.coin;23 iimmppoorrtt java.util.Arrays;56 ppuubblliicc ccllaassss Varargs {78 ppuubblliicc ssttaattiicc vvooiidd 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 parameter13 pol(b, s);14 notPol(b, s);15 }1617 // Type safety: Potential heap pollution18 // via varargs parameter strLists19 ssttaattiicc vvooiidd pol(List<String>... strLists) {20 // ...21 }2223 @SafeVarargs24 ssttaattiicc vvooiidd notPol(List<String>... strLists) {25 // ...26 }27 }28

7

Page 9: Java, Up to Date Sources

MergeSortSimple.java

1 ppaacckkaaggee java7.forkjoin;23 iimmppoorrtt java.util.Arrays;67 ppuubblliicc ccllaassss MergeSortSimple {89 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {

10 Stopwatch stopwatch = nneeww Stopwatch();1112 // ランダムなint配列13 ffiinnaall iinntt SIZE = 100_000_000;14 iinntt[] ints = nneeww iinntt[SIZE];15 ffoorr (iinntt i = 0; i < SIZE; i++) {16 ints[i] = (iinntt) (Math.random() * 100_000);17 }18 System.out.println("head: " + Arrays.toString(Arys.head(ints)));19 System.out.println("tail: " + Arrays.toString(Arys.tail(ints)));2021 stopwatch.start();22 ints = sort(ints);23 stopwatch.stop();2425 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 }2930 ssttaattiicc iinntt[] sort(iinntt[] ints) {31 iiff (ints.length <= 2) {32 rreettuurrnn sortDirect(ints);33 } eellssee {34 iinntt mid = (iinntt) (ints.length * 0.5);35 iinntt[] left = sort(Arrays.copyOf(ints, mid));36 iinntt[] right = sort(Arrays.copyOfRange(ints, mid, ints.length));37 rreettuurrnn merge(left, right);38 }39 }4041 ssttaattiicc iinntt[] sortDirect(iinntt[] ints) {42 iiff (ints.length <= 1) {43 rreettuurrnn ints;44 } eellssee iiff (ints.length == 2) {45 iiff (ints[0] > ints[1]) {46 iinntt g = ints[0];47 ints[0] = ints[1];48 ints[1] = g;49 }50 rreettuurrnn ints;51 }52 tthhrrooww nneeww AssertionError();53 }5455 ssttaattiicc iinntt[] merge(iinntt[] left, iinntt[] right) {56 iinntt[] all = nneeww iinntt[left.length + right.length];5758 ffoorr (iinntt i = 0, j = 0, k = 0; i < all.length; i++) {59 iiff (j < left.length && k < right.length) {60 iinntt l = left[j];61 iinntt r = right[k];62 iiff (l < r) {63 all[i] = l;64 j++;65 } eellssee {66 all[i] = r;67 k++;68 }69 } eellssee iiff (j < left.length) {70 all[i] = left[j];

8

Page 10: Java, Up to Date Sources

MergeSortSimple.java

71 j++;72 } eellssee iiff (k < right.length) {73 all[i] = right[k];74 k++;75 } eellssee {76 tthhrrooww nneeww AssertionError();77 }78 }7980 rreettuurrnn all;81 }82 }83

9

Page 11: Java, Up to Date Sources

MergeSortByForkJoin.java

1 ppaacckkaaggee java7.forkjoin;23 iimmppoorrtt java.util.Arrays;89 ppuubblliicc ccllaassss MergeSortByForkJoin {

1011 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {12 Stopwatch stopwatch = nneeww Stopwatch();13 ForkJoinPool pool = nneeww ForkJoinPool();1415 // ランダムなint配列16 ffiinnaall iinntt SIZE = 100_000_000;17 iinntt[] ints = nneeww iinntt[SIZE];18 ffoorr (iinntt i = 0; i < SIZE; i++) {19 ints[i] = (iinntt) (Math.random() * 100_000);20 }21 System.out.println("head: " + Arrays.toString(Arys.head(ints)));22 System.out.println("tail: " + Arrays.toString(Arys.tail(ints)));2324 stopwatch.start();25 ints = pool.invoke(nneeww MergeSort(ints));26 stopwatch.stop();2728 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 }3233 ssttaattiicc ccllaassss MergeSort eexxtteennddss RecursiveTask<iinntt[]> {34 pprriivvaattee ssttaattiicc ffiinnaall lloonngg serialVersionUID = 1L;3536 iinntt[] ints;3738 MergeSort(iinntt[] ints) {39 tthhiiss.ints = ints;40 }4142 @Override43 pprrootteecctteedd iinntt[] compute() {44 iiff (ints.length <= 2) {45 rreettuurrnn MergeSortSimple.sortDirect(ints);46 } eellssee {47 iinntt mid = (iinntt) (ints.length * 0.5);48 MergeSort leftSort = nneeww MergeSort(Arrays.copyOf(ints, mid));49 MergeSort rightSort = nneeww MergeSort(Arrays.copyOfRange(ints, mid, ints.length));50 leftSort.fork();51 iinntt[] right = rightSort.compute();52 iinntt[] left = leftSort.join();53 rreettuurrnn MergeSortSimple.merge(left, right);54 }55 }56 }57 }58

10

Page 12: Java, Up to Date Sources

MergeSortByExecutor.java

1 ppaacckkaaggee java7.forkjoin;23 iimmppoorrtt java.util.Arrays;

1415 ppuubblliicc ccllaassss MergeSortByExecutor {1617 ssttaattiicc ffiinnaall iinntt pros = Runtime.getRuntime().availableProcessors();18 ssttaattiicc ffiinnaall ExecutorService executor = Executors.newFixedThreadPool(pros);1920 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {21 Stopwatch stopwatch = nneeww Stopwatch();2223 // ランダムなint配列24 ffiinnaall iinntt SIZE = 100_000_000;25 iinntt[] ints = nneeww iinntt[SIZE];26 ffoorr (iinntt i = 0; i < SIZE; i++) {27 ints[i] = (iinntt) (Math.random() * 100_000);28 }29 System.out.println("head: " + Arrays.toString(Arys.head(ints)));30 System.out.println("tail: " + Arrays.toString(Arys.tail(ints)));3132 stopwatch.start();33 ints = divide(ints);34 stopwatch.stop();3536 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);3940 executor.shutdown();41 }4243 ssttaattiicc iinntt[] divide(ffiinnaall iinntt[] ints) {44 List<Future<iinntt[]>> futureList = Lists.newArrayList();45 ffiinnaall iinntt len = ints.length / pros;46 iinntt i = 0;47 ffoorr (; i < pros; i++) {48 ffiinnaall iinntt fi = i;49 futureList.add(executor.submit(nneeww Callable<iinntt[]>() {50 @Override51 ppuubblliicc iinntt[] call() tthhrroowwss Exception {52 rreettuurrnn MergeSortSimple.sort(Arrays.copyOfRange(ints, fi * len, (fi+1) * len));53 }}));54 }55 ffiinnaall iinntt fi = i;56 futureList.add(executor.submit(nneeww Callable<iinntt[]>() {57 @Override58 ppuubblliicc iinntt[] call() tthhrroowwss Exception {59 rreettuurrnn MergeSortSimple.sort(Arrays.copyOfRange(ints, fi * len, ints.length));60 }}));6162 ttrryy {63 Iterator<Future<iinntt[]>> itr = futureList.iterator();64 iinntt[] left = itr.next().get();65 wwhhiillee (itr.hasNext()) {66 iinntt[] right = itr.next().get();67 left = MergeSortSimple.merge(left, right);68 }69 rreettuurrnn left;70 } ccaattcchh (InterruptedException | ExecutionException e) {71 e.printStackTrace();72 }73 tthhrrooww nneeww AssertionError();74 }75 }76

11

Page 13: Java, Up to Date Sources

BasicUse.java

1 ppaacckkaaggee java7.nio2;23 iimmppoorrtt java.io.BufferedWriter;

1112 ppuubblliicc ccllaassss BasicUse {1314 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {15 FileSystem fs = FileSystems.getDefault();16 Path path = fs.getPath("/path", "to", "file");1718 ttrryy (BufferedWriter bw = Files.newBufferedWriter(path,19 StandardCharsets.UTF_8, StandardOpenOption.CREATE)) {2021 bw.write("Oh, NIO.2 !!");2223 } ccaattcchh (IOException e) {24 e.printStackTrace();25 }26 }27 }28

12

Page 14: Java, Up to Date Sources

FilesSample.java

1 ppaacckkaaggee java7.nio2;23 iimmppoorrtt java.io.IOException;9

10 ppuubblliicc ccllaassss FilesSample {1112 ppuubblliicc ssttaattiicc vvooiidd 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");1718 ttrryy {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 bbyyttee[] bytes = Files.readAllBytes(path2);2526 ttrryy (DirectoryStream<Path> ds = Files.newDirectoryStream(dir)) {27 ffoorr (Path path : ds) {28 System.out.println(path);29 }30 }31 } ccaattcchh (IOException e) {32 e.printStackTrace();33 }34 }35 }36

13

Page 15: Java, Up to Date Sources

AttributeViewSample.java

1 ppaacckkaaggee java7.nio2;23 iimmppoorrtt java.io.IOException;

1112 ppuubblliicc ccllaassss AttributeViewSample {1314 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {15 Path path = Paths.get("/path", "to", "file");16 BasicFileAttributeView view17 = Files.getFileAttributeView(path, BasicFileAttributeView.ccllaassss);18 PosixFileAttributeView view219 = Files.getFileAttributeView(path, PosixFileAttributeView.ccllaassss);20 ttrryy {21 iiff (view != nnuullll) {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 iiff (view2 != nnuullll) {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 } ccaattcchh (IOException e) {34 e.printStackTrace();35 }36 }37 }38

14

Page 16: Java, Up to Date Sources

FileVisitorSample.java

1 ppaacckkaaggee java7.nio2;23 iimmppoorrtt java.io.IOException;

1011 ppuubblliicc ccllaassss FileVisitorSample {1213 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {14 ttrryy {15 Path dir = Paths.get("/path", "to", "dir");16 Files.walkFileTree(dir, nneeww SimpleFileVisitor<Path>() {17 @Override18 ppuubblliicc FileVisitResult preVisitDirectory(Path dir,19 BasicFileAttributes attrs) tthhrroowwss IOException {20 System.out.println("preVisitDir: " + dir);21 rreettuurrnn FileVisitResult.CONTINUE;22 }2324 @Override25 ppuubblliicc FileVisitResult postVisitDirectory(Path dir,26 IOException exc) tthhrroowwss IOException {27 System.out.println("postVisitDir: " + dir);28 rreettuurrnn FileVisitResult.CONTINUE;29 }3031 @Override32 ppuubblliicc FileVisitResult visitFile(Path file,33 BasicFileAttributes attrs) tthhrroowwss IOException {34 System.out.println("visitFile: " + file);35 rreettuurrnn FileVisitResult.CONTINUE;36 }37 });38 } ccaattcchh (IOException e) {39 e.printStackTrace();40 }41 }42 }43

15

Page 17: Java, Up to Date Sources

WatchServiceSample.java

1 ppaacckkaaggee java7.nio2;23 iimmppoorrtt java.io.IOException;

1112 ppuubblliicc ccllaassss WatchServiceSample {1314 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {15 FileSystem fs = FileSystems.getDefault();16 Path dir = fs.getPath("/path", "to", "dir");17 ttrryy {18 WatchService watcher = fs.newWatchService();19 dir.register(watcher,20 StandardWatchEventKinds.ENTRY_CREATE,21 StandardWatchEventKinds.ENTRY_MODIFY,22 StandardWatchEventKinds.ENTRY_DELETE);23 bboooolleeaann valid;24 ddoo {25 WatchKey key = watcher.take(); // ブロック26 ffoorr (WatchEvent<?> event : key.pollEvents()) {27 iiff (event.kind() == StandardWatchEventKinds.OVERFLOW) {28 System.out.println("overflow!!");29 } eellssee {30 System.out.println(31 event.kind() + " : " + event.context());32 }33 }34 valid = key.reset();35 } wwhhiillee (valid);36 } ccaattcchh (IOException | InterruptedException e) {37 e.printStackTrace();38 }39 }40 }41

16

Page 18: Java, Up to Date Sources

AsynchronousSample.java

1 ppaacckkaaggee java7.nio2;23 iimmppoorrtt java.io.FileInputStream;

1516 ppuubblliicc ccllaassss AsynchronousSample {1718 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {19 ttrryy (InputStream in = nneeww FileInputStream(20 "/path/to/largeFile");) {21 write(in).await();22 } ccaattcchh (IOException | InterruptedException e) {23 e.printStackTrace();24 }25 }2627 ssttaattiicc CountDownLatch write(InputStream in) {28 ReadableByteChannel rbc = Channels.newChannel(in);29 ByteBuffer buf = ByteBuffer.allocate(0x1000);3031 Path file = Paths.get("/path", "to", "file");32 CountDownLatch latch = nneeww CountDownLatch(1);33 ttrryy {34 AsynchronousFileChannel afc = 35 AsynchronousFileChannel.open(file,36 StandardOpenOption.CREATE,37 StandardOpenOption.WRITE);38 iinntt len;39 iiff ((len = rbc.read(buf)) > -1) {40 buf.flip();41 afc.write(buf, 0, buf, nneeww WriteContinuing(rbc, afc, len, latch));42 }43 } ccaattcchh (IOException e) {44 e.printStackTrace();45 latch.countDown();46 }47 rreettuurrnn latch;48 }4950 ssttaattiicc ccllaassss WriteContinuing iimmpplleemmeennttss CompletionHandler<Integer, ByteBuffer> {51 pprriivvaattee ffiinnaall ReadableByteChannel rbc;52 pprriivvaattee ffiinnaall AsynchronousFileChannel afc;53 pprriivvaattee ffiinnaall iinntt pos;54 pprriivvaattee ffiinnaall CountDownLatch latch;5556 ppuubblliicc WriteContinuing(57 ReadableByteChannel rbc,58 AsynchronousFileChannel afc,59 iinntt position,60 CountDownLatch latch) {61 tthhiiss.rbc = rbc;62 tthhiiss.afc = afc;63 tthhiiss.pos = position;64 tthhiiss.latch = latch;65 }6667 @Override68 ppuubblliicc vvooiidd completed(Integer result, ByteBuffer buf) {69 buf.clear();70 ttrryy{71 iinntt len;72 iiff ((len = rbc.read(buf)) > -1) {73 buf.flip();74 afc.write(buf, pos, buf, nneeww WriteContinuing(rbc, afc, pos + len, latch));75 } eellssee {76 System.out.println("completed!");77 afc.close();78 latch.countDown();79 }

17

Page 19: Java, Up to Date Sources

AsynchronousSample.java

80 } ccaattcchh (IOException e) {81 e.printStackTrace();82 latch.countDown();83 }84 }8586 @Override87 ppuubblliicc vvooiidd failed(Throwable exc, ByteBuffer buf) {88 exc.printStackTrace();89 }90 }91 }92

18

Page 20: Java, Up to Date Sources

Puzzle.java

1 ppaacckkaaggee java7.puzzle;23 iimmppoorrtt java.util.Arrays;56 ppuubblliicc ccllaassss Puzzle {78 ppuubblliicc ssttaattiicc vvooiidd main(String[] args) {9 List<String>[] stringLists = nneeww 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

Page 21: Java, Up to Date Sources

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

Page 22: Java, Up to Date Sources

MyBean.java

123 iimmppoorrtt javax.inject.Inject;56 @Named7 ppuubblliicc ccllaassss MyBean {8 @Inject9 pprriivvaattee MyService myService;

1011 ppuubblliicc String getGreeting() {12 rreettuurrnn myService.getGreeting();13 }14 }15

21

Page 23: Java, Up to Date Sources

MyService.java

123 iimmppoorrtt javax.annotation.ManagedBean;45 @ManagedBean6 ppuubblliicc ccllaassss MyService {7 ppuubblliicc String getGreeting() {8 rreettuurrnn "Hello JavaEE6!!";9 }

10 }11

22

Page 24: Java, Up to Date Sources

beans.xml

1

23

Page 25: Java, Up to Date Sources

faces-config.xml

1

24

Page 26: Java, Up to Date Sources

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/.

Notes

25