Skip to content

Instantly share code, notes, and snippets.

@mcupak
Created Apr 24, 2018
Embed
What would you like to do?
Session notes from the Exploring Java 9 with REPL talk at Java With The Best 2018.
/
1+1
int x = 1+1
System.out.println(x)
Thread.sleep(2000)
/vars
/types
int inc(int x) { return x+1; }
inc(5)
/list
/l
/help
Set<String> set = new HashSet<String>()
set.add("a")
set.add("b")
set.add("c")
Collections.unmodifiableSet(set)
List<Integer> list = List.of(1,2,3)
list.add(4)
list.getClass()
Map.ofEntries(entry(1, "hello"))
IntStream.range(0, 10).forEach(System.out::println)
IntStream.range(0, 10).limit(5).forEach(System.out::println)
IntStream.range(0, 10).skip(5).forEach(System.out::println)
IntStream.range(0, 10).takeWhile(x -> x<5).forEach(System.out::println)
IntStream.range(0, 10).dropWhile(x -> x<5).forEach(System.out::println)
IntStream.iterate(0, i -> i+2).filter(j -> j<100).forEach(System.out::println)
IntStream.iterate(0, i -> i<100, i -> i+2).forEach(System.out::println)
Stream.of(1)
Stream.of(null)
Stream.ofNullable(null)
Stream.ofNullable(null).count()
Optional.empty()
Optional.of("something")
Optional.of("something").ifPresent(System.out::println)
Optional.empty().ifPresent(System.out::println)
Optional.empty().ifPresentOrElse(System.out::println, () -> System.out.println("empty"))
Optional.empty().orElse("empty")
Optional.empty().orElseGet(() -> "empty")
Optional.empty().or(() -> Optional.of("empty"))
Optional.of("something").or(() -> Optional.of("empty"))
Optional.of("something").stream().forEach(System.out::println)
Optional.empty().stream().forEach(System.out::println)
CompletableFuture<String> cf = new CompletableFuture<String>()
cf.complete("done")
cf.get()
CompletableFuture<String> cf = new CompletableFuture<String>()
cf.get()
cf.completeExceptionally(new IllegalStateException())
cf.get()
CompletableFuture<String> cf = new CompletableFuture<String>()
cf.completeOnTimeout("timed out", 5, TimeUnit.SECONDS)
cf
cf
cf
cf.get()
CompletableFuture<String> cf = new CompletableFuture<String>()
cf.orTimeout(5, TimeUnit.SECONDS)
cf
cf
cf.get()
CompletableFuture<String> cf = new CompletableFuture<String>()
CompletableFuture<String> copy = cf.copy()
cf
copy
cf.complete("done")
copy
copy.get()
CompletableFuture<String> cf = new CompletableFuture<String>()
CompletableFuture<String> copy = cf.copy()
copy.complete("done")
copy
cf
StackTraceElement[] st = new Throwable().getStackTrace()
st
StackWalker.getInstance().walk(s -> s.collect(Collectors.toList()))
StackWalker.getInstance().walk(s -> s.limit(3).collect(Collectors.toList()))
StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).walk(s -> s.map(f -> f.getDeclaringClass()).collect(Collectors.toList()))
StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).walk(s -> s.map(f -> f.getDeclaringClass()).filter(c -> c.equals(jdk.jshell.execution.Util.class)).collect(Collectors.toList()))
new ProcessBuilder().command("jps").start()
ProcessHandle.current().pid()
ProcessHandle.current().info()
ProcessHandle.current().info().commandLine()
ProcessHandle.allProcesses().map(p -> p.info().command()).collect(Collectors.toList())
new ProcessBuilder().command("sleep", "3").start().toHandle().onExit().thenAccept(System.out::println)
ProcessBuilder jps = new ProcessBuilder().command("jps")
ProcessBuilder grep = new ProcessBuilder().command("grep", "JShell")
List<Process> pipeline = ProcessBuilder.startPipeline(List.of(jps,grep))
pipeline
new BufferedReader(new InputStreamReader(pipeline.get(1).getInputStream())).readLine()
HttpHandler handler = he -> {
String body = "hello jwtb";
he.sendResponseHeaders(200, body.length());
try (OutputStream os = he.getResponseBody()){
os.write(body.getBytes());
}
}
/l handler
HttpServer hs = HttpServer.create(new InetSocketAddress(8000), 0)
hs.createContext("/hello", handler)
hs.start()
URI uri = new URI("http://localhost:8000/hello")
HttpURLConnection c = (HttpURLConnection) uri.toURL().openConnection()
c.setRequestMethod("GET")
c.getResponseCode()
new BufferedReader(new InputStreamReader(c.getInputStream())).readLine()
HttpClient client = HttpClient.newHttpClient()
HttpRequest request = HttpRequest.newBuilder().uri(uri).GET().build()
HttpResponse<String> response = client.send(request, BodyHandler.asString())
response.statusCode()
response.body()
CompletableFuture<HttpResponse<String>> response = client.sendAsync(request, BodyHandler.asString())
response.get().body()
JShell js = JShell.create()
List<SnippetEvent> events = js.eval("1+1")
js.variables().forEach(System.out::println)
events.stream().map(e -> e.status()).forEach(System.out::println)
events.stream().map(e -> e.snippet().source()).forEach(System.out::println)
events.stream().map(e -> e.value()).forEach(System.out::println)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment