airhacks.fm podcast with adam bien podcast

From Java 8 Lambdas, Streams, Spliterators, to Default Methods

0:00
1:09:14
Retroceder 15 segundos
Avanzar 15 segundos
An airhacks.fm conversation with Stuart Marks (@stuartmarks) about: the history of the Teletype Model 33 and punched paper tape, Telex service and long-distance communication costs, the connection between TTY and the teletype company name, 110 baud modems and 10 characters per second transmission, Wang Laboratories field offices connected via Telex, the evolution from Java Enumeration to Iterator to Iterable, Vector.elements() and the absence of an Enumerable interface, the introduction of Iterator and Iterable in JDK 1.2 and 1.5 respectively, the legacy collections Vector and Hashtable and their method-level synchronization overhead, Java 8 lambdas and streams as the major language feature, default methods enabling compatible interface evolution, the long-standing problem of not being able to add methods to published interfaces, Brian Goetz as the main designer of the Spliterator concept, Eclipse Collections and Rich Iterable as an alternative to streams, the GS Collections to Eclipse Collections history, C# LINQ as a competing influence that pressured Java to add streams, the design decision to separate lazy stream operations from eager collection operations, intermediate vs terminal operations in stream pipelines, why streams cannot be consumed twice and the buffering problem with forking streams, primitive specializations of streams (IntStream, LongStream, DoubleStream) and the original compromise of Java primitives vs objects, Spliterator characteristics, the subsized optimization that avoids intermediate storage and merge steps for array-based collections, how Spliterator splitting works for parallel execution and the fork/join pool, Amdahl's law and minimizing single-threaded setup for parallel streams, why Spliterator.trySplit mutates in place rather than returning two new spliterators, HashSet being sized but not subsized due to bucket distribution, ArrayList vs LinkedList performance considerations for streams, streams from non-collection sources like BufferedReader.lines() and String.lines(), infinite streams with Stream.generate(), the limitations of streams for reactive or socket-based processing, the for-each approach as an alternative to to-list for live data sources, the upcoming topics of fork/join pools and parallel stream configuration, the JavaOne conference

Stuart Marks on twitter: @stuartmarks

Otros episodios de "airhacks.fm podcast with adam bien"