Java - все не так уж плохо
Радик Фаттахов, БАРС Груп
@radikft
В мире Java все не так уж плохо
А с выходом Java 8 все стало совсем хорошо
На самом деле
class ReadFile8 {
public static void main(String[] args) throws IOException {
try (Stream st = Files.lines(Paths.get("file_utf8.txt"))) {
st.forEach(System.out::println);
}
}
}
На самом деле
Скачать 2 jar-файла
public class HelloWorld extends AbstractHandler {
@Override
public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response) throws
IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("Hello World
");
}
public static void main(String[] args) throws Exception {
Server server = new Server(8000);
server.setHandler(new HelloWorld());
server.start();
server.join();
}
}
NOT BAD
- What is pip?
- It's a python package manager.
You can install it with easy_install.
- What is easy_install?
- It's a python package manager...
Почему Java?
- Cross Platform
- Backward compatibility
- Easy to learn
- And ... Java 8!
Java 8 - ну наконец-то!
Lambda Expressions
() -> System.out.println(this)
(String str) -> System.out.println(str)
str -> System.out.println(str)
(String s1, String s2) -> { return s2.length() - s1.length(); }
(s1, s2) -> s2.length() - s1.length()
Java 8 - Lambda Expressions
Arrays.sort(strArray, (String s1, String s2) -> s2.length() - s1.length());
Java 8 - Method references
public class FileFilters {
public static boolean fileIsPdf(File file) {/*code*/}
public static boolean fileIsTxt(File file) {/*code*/}
public static boolean fileIsRtf(File file) {/*code*/}
}
Stream <File> pdfs = getFiles().filter(FileFilters::fileIsPdf);
Java 8 - Functional Interfaces
- Function<T,R>
- Supplier<T>
- Predicate<T>
Function<String, String> atr = (name) -> {return "@" + name;};
Java 8 - Optional
Tony Hoare: "Null References: The Billion Dollar Mistake"
Java 8 - Default Methods
interface Foo {
default void talk() {
out.println("Foo!");
}
}
Java 8 - Streams
stream()
parallelStream()
Java 8 - Streams
Stream.generate(() -> Math.random());
Stream.iterate(1, i -> i+1).forEach(System.out::print);
IntStream.range(1, 11).forEach(System.out::println);
Java 8 - Streams - ForEach
Files.list(Paths.get(".")).forEach(System.out::println);
Java 8 - Map/Filter/Reduce
PlayerPoints highestPlayer =
names.stream().map(name -> new PlayerPoints(name, getPoints(name)))
.reduce(new PlayerPoints("", 0.0),
(s1, s2) -> (s1.points > s2.points) ? s1 : s2);
Java 8 - Streams - а кроме того...
- Peek
- Limit
- Sort
- Collectors and Statistics
- Grouping and Partitioning
И все это concurrent из коробки!