
Clojure: High Performance JVM Programming
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Persons
Eduardo Díaz is a developer with a strong background in the Java language. He has a passion for functional programming and new programming paradigms. His work includes full stack development, systems design, and high volume real time data processing. He has worked on every technology related problem you can imagine, as a consultant solving anything related to Java, UNIX, C, or any other strange problem you might have had. As a developer, he has been working for around 10 years on Java, Python, Scala, Clojure, in the media, bank, and primarily communications industries. He is currently working at Grupo Expansion, a media company, where he helps design and implement a new content delivery platform aiming to empower content editors and encourage developers to find new ways to use data.Kumar Shantanu :
Shantanu Kumar is a software developer living in Bengaluru, India. He works with Concur Technologies as a principal engineer, building a next-generation stack in Clojure. He started learning computer programming when he was at school, and has dabbled in several programming languages and software technologies. Having used Java for a long time, he discovered Clojure in early 2009 and has been a fan of it ever since. When not busy with programming or reading up on technical stuff, he enjoys reading non-fiction and cycling around Bengaluru. Shantanu is an active participant in The Bangalore Clojure Users Group, and contributes to several open source Clojure projects on GitHub. He is also the author of the first edition of the book Clojure High Performance Programming, Packt Publishing.Wali Akhil :
Akhil Wali is a software developer. He has been writing code as a hobbyist since 1997 and professionally since 2010. He completed his post graduation from Santa Clara University in 2010, and he graduated from Visvesvaraya Technological University in 2008. His areas of work include business intelligence systems, ERP systems, search engines, and document collaboration tools. He mostly works with Clojure, JavaScript, and C#. Apart from computers, his interests include soccer, guitar solos, and finding out more about the universe.
Content
- Intro
- Cover
- Copyright
- Credits
- Preface
- Table of content
- Module 1: Clojure for Java Developers
- Chapter 1: Getting Started with Clojure
- Getting to know Clojure
- Installing Leiningen
- Using a REPL
- Creating a new project
- Using Cursive Clojure
- Getting started with Clojure code and data
- Clojure's data types
- Summary
- Namespaces, Packages, and Tests
- Namespaces in Clojure
- The classpath and the classloader
- Testing in Clojure
- Summary
- Chapter 2: Interacting with Java
- Using Maven dependencies
- Clojure interop syntax
- Writing a simple image namespace
- Writing the tests
- Destructuring in Clojure
- Exposing your code to Java
- Proxy and reify
- Summary
- Chapter 4: Collections and Functional Programming
- Basics of functional programming
- Persistent collections
- Types of collections in Clojure
- The sequence abstraction
- Specific collection types in Clojure
- Summary
- Chapter 5: Multimethods and Protocols
- Polymorphism in Java
- Multimethods in Clojure
- Protocols in Clojure
- Summary
- Chapter 6: Concurrency
- Using your Java knowledge
- The Clojure model of state and identity
- Promises
- Futures
- Software transactional memory and refs
- Atoms
- Agents
- core.async
- Summary
- Chapter 7: Macros in Clojure
- Lisp's foundational ideas
- Macros as code modification tools
- Writing your first macro
- Debugging your first macro
- Macros in the real world
- References
- Summary
- Module 2: Clojure High Performance Programming, Second Edition
- Chapter 1: Performance by Design
- Use case classification
- A structured approach to the performance
- The performance vocabulary
- The latency numbers that every programmer should know
- Summary
- Chapter 2: Clojure Abstractions
- Non-numeric scalars and interning
- Identity, value, and epochal time model
- Persistent data structures
- Sequences and laziness
- Transducers
- Transients
- Performance miscellanea
- Summary
- Chapter 3: Leaning on Java
- Inspecting the equivalent Java source for Clojure code
- Numerics, boxing, and primitives
- Arrays
- Reflection and type hints
- Using array/numeric libraries for efficiency
- Resorting to Java and native code
- Summary
- Chapter 4: Host Performance
- The hardware
- The Java Virtual Machine
- Measuring latency with Criterium
- Summary
- Chapter 5: Concurrency
- Low-level concurrency
- Atomic updates and state
- Asynchronous agents and state
- Coordinated transactional ref and state
- Dynamic var binding and state
- Validating and watching the reference types
- Java concurrent data structures
- Concurrency with threads
- Clojure parallelization and the JVM
- Parallelism with reducers
- Summary
- Chapter 6: Measuring Performance
- Performance measurement and statistics
- Performance testing
- Performance monitoring
- Profiling
- Summary
- Chapter 7: Performance Optimization
- Project setup
- Identifying performance bottlenecks
- Profiling code with VisualVM
- The Monitor tab
- Performance tuning
- Summary
- Chapter 8: Application Performance
- Choosing libraries
- Logging
- Data sizing
- Resource pooling
- I/O batching and throttling
- Precomputing and caching
- Concurrent pipelines
- Applying back pressure
- Performance and queueing theory
- Summary
- Module 3: Mastering Clojure
- Chapter 1: Working with Sequences and Patterns
- Defining recursive functions
- Thinking in sequences
- Working with pattern matching
- Summary
- Chapter 2: Orchestrating Concurrency and Parallelism
- Managing concurrent tasks
- Managing state
- Executing tasks in parallel
- Summary
- Chapter 3: Parallelization Using Reducers
- Using reduce to transform collections
- Using fold to parallelize collections
- Processing data with reducers
- Summary
- Chapter 4: Metaprogramming with Macros
- Understanding the reader
- Reading and evaluating code
- Quoting and unquoting code
- Transforming code
- Summary
- Chapter 5: Composing Transducers
- Understanding transducers
- Transducers in action
- Summary
- Chapter 6: Exploring Category Theory
- Demystifying category theory
- Using monoids
- Using functors
- Using applicative functors
- Using monads
- Summary
- Chapter 7: Programming with Logic
- Diving into logic programming
- Thinking in logical relations
- Summary
- Chapter 8: Leveraging Asynchronous Tasks
- Using channels
- Using actors
- Summary
- Chapter 9: Reactive Programming
- Reactive programming with fibers and dataflow variables
- Using Reactive Extensions
- Using functional reactive programming
- Building reactive user interfaces
- Introducing Om
- Summary
- Chapter 10: Testing Your Code
- Writing tests
- Testing with specs
- Generative testing
- Testing with types
- Summary
- Chapter 11: Troubleshooting and Best Practices
- Debugging your code
- Logging errors in your application
- Thinking in Clojure
- Summary
- References
- Bibliography
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.