Showing posts with label concurrency. Show all posts
Showing posts with label concurrency. Show all posts

Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms Review

Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms
Average Reviews:

(More customer reviews)
Are you looking to buy Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms? Here is the right place to find the great deals. we can offer discounts of up to 90% on Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms ReviewI bought this book when I was a 2nd grade CS student. I planned to start my research project in supercomputing field. So I decided to study the aspects of parallel computing starting by its concepts and programming. As a programmer I found that I would need the general view before coding. Kumar's book is great in which it gives you generalized overview of hardware and software architectures. He and his contributors don't take care of what system nor language you're using. Instead, they want you to learn Parallel Programming. Scientific and non-numerical algorithms are overviewed and explained mathematically. They prove everything they state by using mathematics. I don't know any better way. Do you? It's worth every penny.Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms OverviewTake an in-depth look at techniques for the design and analysis of parallel algorithms with this new text. The broad, balanced coverage of important core topics includes sorting and graph algorithms, discrete optimization techniques, and scientific computing applications. The authors focus on parallel algorithms for realistic machine models while avoiding architectures that are unrealizable in practice. They provide numerous examples and diagrams illustrating potentially difficult subjects and conclude each chapter with an extensive list of bibliographic references. In addition, problems of varying degrees of difficulty challenge readers at different levels. Introduction to Parallel Computing is an ideal tool for students and professionals who want insight into problem-solving with parallel computers. Features: *Presents parallel algorithms in terms of a small set of basic data communication operations, greatly simplifying the design and understanding of these algorithms. *Emphasizes practical issues of performance, efficiency, and scalability. *Provides a self-contained discussion of the basic concepts of parallel computer architectures.*Covers algorithms for scientific computation, such as dense and sparse matrix computations, linear system solving, finite elements, and FFT. *Discusses algorithms for combinatorial optimization, including branch-and-bound, unstructured tree search, and dynamic programming. *Incorporates various parallel programming models and languages as well as illustrative examples for commercially-available computers. Audience: Junior/Senior/Graduate Computer Science and Computer Engineering majors Professional/Reference Courses: Distributed Computing Parallel Programming Parallel Algorithms Prerequisites: Operating Systems and Analysis of Algorithms 0805331700B04062001

Want to learn more information about Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

The Java Class Libraries: An Annotated Reference (Java Series) (v. 1) Review

The Java Class Libraries: An Annotated Reference (Java Series) (v. 1)
Average Reviews:

(More customer reviews)
Are you looking to buy The Java Class Libraries: An Annotated Reference (Java Series) (v. 1)? Here is the right place to find the great deals. we can offer discounts of up to 90% on The Java Class Libraries: An Annotated Reference (Java Series) (v. 1). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

The Java Class Libraries: An Annotated Reference (Java Series) (v. 1) ReviewThis is a great book, but you want the second edition, which covers up to Java 1.1. Its ISBN is different.The Java Class Libraries: An Annotated Reference (Java Series) (v. 1) OverviewProviding coverage of the Java API and the Window Toolkit and Applet packages, this text features detailed examples that are drawn from the author's experience of programming with the API.

Want to learn more information about The Java Class Libraries: An Annotated Reference (Java Series) (v. 1)?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Concurrent Programming on Windows Review

Concurrent Programming on Windows
Average Reviews:

(More customer reviews)
Are you looking to buy Concurrent Programming on Windows? Here is the right place to find the great deals. we can offer discounts of up to 90% on Concurrent Programming on Windows. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Concurrent Programming on Windows ReviewI really wanted to like this book, but in the end I couldn't. It seems to me to be at least twice as long as it needs to be, extremely poorly and confusingly written, and a mish-mash of random odds and ends. I don't think the author has really worked out who his target audience is. Is it people who have a serious interest in the logic of concurrent programming - in which case you'd be better off reading the original papers by the likes of Dijkstra and Hoare, or the much much shorter book by Ben-Ari? Or is it aimed at people who want to write concurrent programs that work on Windows? In which case you'd be better off reading the much shorter book by Beveridge and Wiener.
Proof-reading and quality control is shoddy. For example, I have the distinct impression that at some point some-one has done a global replace of "task" with "thread" in the text, resulting in jibber-jabber such as "though it's highly unlikely that anybody reading this book will have to take on such a thread" on page 60, to cite one example out of several that I noticed.Concurrent Programming on Windows Overview"When you begin using multi-threading throughout an application, the importance of clean architecture and design is critical. . . . This places an emphasis on understanding not only the platform's capabilities but also emerging best practices. Joe does a great job interspersing best practices alongside theory throughout his book." – From the Foreword by Craig Mundie, Chief Research and Strategy Officer, Microsoft CorporationAuthor Joe Duffy has risen to the challenge of explaining how to write software that takes full advantage of concurrency and hardware parallelism. In Concurrent Programming on Windows, he explains how to design, implement, and maintain large-scale concurrent programs, primarily using C# and C++ for Windows.Duffy aims to give application, system, and library developers the tools and techniques needed to write efficient, safe code for multicore processors. This is important not only for the kinds of problems where concurrency is inherent and easily exploitable—such as server applications, compute-intensive image manipulation, financial analysis, simulations, and AI algorithms—but also for problems that can be speeded up using parallelism but require more effort—such as math libraries, sort routines, report generation, XML manipulation, and stream processing algorithms.Concurrent Programming on Windows has four major sections: The first introduces concurrency at a high level, followed by a section that focuses on the fundamental platform features, inner workings, and API details. Next, there is a section that describes common patterns, best practices, algorithms, and data structures that emerge while writing concurrent software. The final section covers many of the common system-wide architectural and process concerns of concurrent programming. This is the only book you'll need in order to learn the best practices and common patterns for programming with concurrency on Windows and .NET.

Want to learn more information about Concurrent Programming on Windows?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Multithreaded Programming with Java Technology Review

Multithreaded Programming with Java Technology
Average Reviews:

(More customer reviews)
Are you looking to buy Multithreaded Programming with Java Technology? Here is the right place to find the great deals. we can offer discounts of up to 90% on Multithreaded Programming with Java Technology. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Multithreaded Programming with Java Technology ReviewThe first 150 pages (one third) of this book have little to do with Java. Rather, it is a port of the authors' previous book on POSIX. It talks about three main platforms (Solaris, Digital, and Wintel) and goes into great detail as to how a Java VM uses each OS's primitives to offer Java synchronization. Why?
The authors show bias towards Solaris, and they spend a great amount of time focusing on how you can get the right number of LWPs on Solaris.
If I'm buying a Java book, I'm programming to the Java VM and could care less if Digital Unix gives you one light-weight process per CPU plus one for each outstanding system call. I also don't care about making native calls to the OS under Solaris.
The introduction suggests that multitheading offers increased speed by running on Parellel hardware. I think what people are really looking for is increased responsiveness. Most computers are single-CPU.
The authors are experts in their areas, and they do cover eventually cover multithreading in a no-nonsense manner, with the target audience being the advanced programmer. Don't be annoyed by thier constantly saying, "no, you don't want to do that. Don't do that", and then telling you why in a few more chapters.Multithreaded Programming with Java Technology OverviewJava offers powerful multithreading capabilities -- even on operating systems that offer no inherent multithreading support. Multithreading gives Java developers a powerful tool for dramatically improving the responsiveness and performance of their programs. Now there's a complete guide to multithreaded programming with the Java 2 platform, written by multithreaded programming experts Bil Lewis and Daniel J. Berg. Start by understanding the rationale, fundamental concepts and foundations of multithreading, including the structures upon which threads are built, thread construction and lifecycles. Then, using extensive code examples, you'll master thread scheduling models; synchronization variables; and learn how to solve complex synchronization problems. The authors explain thread-specific data, and demonstrate how to leverage OS libraries to make Java multithreading more effective. They also cover multithreaded program design, interactions with RMI, tools for building threaded programs; and advanced techniques for maximizing thread performance.

Want to learn more information about Multithreaded Programming with Java Technology?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Programming Clojure (Pragmatic Programmers) Review

Programming Clojure (Pragmatic Programmers)
Average Reviews:

(More customer reviews)
Are you looking to buy Programming Clojure (Pragmatic Programmers)? Here is the right place to find the great deals. we can offer discounts of up to 90% on Programming Clojure (Pragmatic Programmers). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Programming Clojure (Pragmatic Programmers) ReviewIt is hard to be objective when reviewing this book. I have struggled to separate my enthusiasm for "Clojure The Language" from my honest opinion of "Clojure The Book".
Clojure is a remarkable language.
Clojure The Language deserves five stars every day of the week and twice on Sunday.
Clojure "The Book", on the other hand, is simply passable. The book is "okay".
Clojure is remarkable partly because Lisp is remarkable, and partly because Clojure has taken the difficult concept of concurrency and turned it into an exhilarating, attractive, efficient, sensible tool. I highly recommend that all curious programmers try the Clojure language.
Unfortunately, I cannot give this book a high recommendation. This is not a bad book. But it is definitely not a 5-star book.
The 5-star score would place this book in the same category as such beloved books as the Flanagan/Matsumoto Ruby book, or Meyers' Effective C++, or even Rossum's original (now deprecated) An Introduction to Python. Scoring the Stuart Halloway book as "on par" with those other books just simply does not ring true.
The Stuart Halloway book is a fast and easy read. However, it is more like a series of really nice blog entries than a solid introductory programming language book. I enjoyed Stuart's writing style, and I even enjoyed all of the sample code.
However, at the end of the day, "there is no there there".
I needed to refer to other books in order to become PRODUCTIVE with Clojure. When I purchased the Halloway book, no other Clojure books had been written yet, so I relied upon books that were written about coding techniques in other flavors of Lisp.
Reading the Halloway book was like watching a really fun and captivating movie trailer. It made me stop and say "Wow! That was cool! ... um... okay. Now can I watch the entire movie?"
If you are already fluent in another Lisp dialect, then you probably do not need this book.
In fact, if you already know some variant of Lisp, then you need to learn about the JVM and various Java platform ideas far more than you need to study Clojure itself. Clojure itself will come naturally to a "lisper". Yet you may be mystified about where to put your jar files and about what the various Java exceptions are telling you. And if you want to debug your Clojure programs, you will likely be using a Java debugger.
If you know Lisp, you can combine that previous knowledge with the Clojure API documentation, and the excellent Mark Volkmann website, and that will probably be enough. An "industrial strength" book on Java (including various compilation and deployment techniques) will help you much more than a book on Clojure.
If you have never programmed in any sort of Lisp at all, then I can almost guarantee that this book on Clojure will not be enough to get you fully "up and running" with Clojure. Most certainly you will learn how to write small scripts and games like the ones demonstrated in the book, but you will probably start to feel the weakness of this book as soon as you want to build something larger.Programming Clojure (Pragmatic Programmers) Overview
Clojure is a dynamic language for the Java Virtual Machine, with a compelling combination of features: Clojure is elegant. Clojure's clean, careful design lets you write programs that get right to the essence of a problem, without a lot of clutter and ceremony. Clojure is Lisp reloaded. Clojure has the power inherent in Lisp, but is not constrained by the history of Lisp. Clojure is a functional language. Data structures are immutable, and functions tend to be side-effect free. This makes it easier to write correct programs, and to compose large programs from smaller ones. Clojure is concurrent. Rather than error-prone locking, Clojure provides software transactional memory. Clojure embraces Java. Calling from Clojure to Java is direct, and goes through no translation layer. Clojure is fast. Wherever you need it, you can get the exact same performance that you could get from hand-written Java code. Many other languages offer some of these features, but the combination of them all makes Clojure sparkle. Programming Clojure shows you why these features are so important, and how you can use Clojure to build powerful programs quickly.


Want to learn more information about Programming Clojure (Pragmatic Programmers)?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Threads Primer: A Guide to Multithreaded Programming Review

Threads Primer: A Guide to Multithreaded Programming
Average Reviews:

(More customer reviews)
Are you looking to buy Threads Primer: A Guide to Multithreaded Programming? Here is the right place to find the great deals. we can offer discounts of up to 90% on Threads Primer: A Guide to Multithreaded Programming. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Threads Primer: A Guide to Multithreaded Programming ReviewThis was an excellent book with detailed coverage of threads programming even down to how various hardware architectures affect multithreaded program behavior. However there is a more current edition under a different name (Multithreaded Programming with Pthreads) by the same authors that is more current that I would recommend instead (everything in this book is in the newer book).Threads Primer: A Guide to Multithreaded Programming OverviewFor programmers, system architects, and technical programmer managers.Providing an overview of the Solaris and POSIX multithreading architectures, this book explains threads at a level that is completely accessible to programmers and system architects with no previous knowledge of threads. Covers the business and technical benefits of threaded programs, along with discussions of third party software that is threaded, pointing out the benefits.

Want to learn more information about Threads Primer: A Guide to Multithreaded Programming?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

The Art of Multiprocessor Programming Review

The Art of Multiprocessor Programming
Average Reviews:

(More customer reviews)
Are you looking to buy The Art of Multiprocessor Programming? Here is the right place to find the great deals. we can offer discounts of up to 90% on The Art of Multiprocessor Programming. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

The Art of Multiprocessor Programming ReviewThe Art of Multiprocessor Programming is an outstanding text that will soon become a classic. I give a chapter by chapter review of it below.
Practitioners that are already well versed in parallel programming can jump directly to Chapter 7, however, I would suggest at least skimming Chapters 2, 3 and 4. Even those programmers who understand shared memory and locking may be shocked at how relaxed memory models or compiler optimizations can reorder operations causing innocent looking code to break.
----------------------------------------
Chapter 1 - Introduction
Why is this book called "The Art of Multiprocessor Programming" and not "The Art of Parallel Programming?" It is not by accident. There is a directed effort to explain parallel programming concepts as they relate to multi-core (or many-core) architectures. In particular, shared-memory multiprocessors have specific implementation details, such as cache coherence policies, that directly affect parallel software run on such architectures. The introduction gives a brief overview of the direction of the text: principles and practice.
----------------------------------------
Part 1 - Principles
Chapter 2 - Mutual Exclusion
Mutual exclusion is a key concept to multi-threaded programming, and this chapter is rightly placed at the beginning of the text. This chapter presents some of the foundational concepts in parallel computing, such as, understanding time related to operation interleavings, pessimistic critical sections, forward progress, deadlocks and fairness. In addition, some of the classic algorithms are presented here, such as Lamport's Ticket Locking and Peterson's 2-Threaded Lock.
Chapter 3 - Concurrent Objects
This chapter starts off simple, but gets complex fast. While experts will understand and acknowledge the importance of this chapter, less experienced programmers will find it very challenging to understand and may be turned off: don't give up!
My suggestion to non-experts is to focus on understanding two concepts of this chapter: hardware sequential consistency (3.4) and software linearizibility (3.5). Once you understand both concepts, skim all other sections except section 3.8.
Java programmers may want to pay special attention to the Java Memory Model section (3.8) and ill-formed unsynchronized code. General programmers will also be interested in this section as it is important to understand how the hardware's memory consistency model, the programming language's memory model and the compiler's operation reordering optimizations may interfere with what "looks like" correct code.
Do not be discouraged by the difficult of this chapter. It is one of the most difficult chapter in the text. Get through it and keep reading.
Chapter 4 - Foundations of Shared Memory
This chapter concentrates on understanding shared memory, the cornerstone of all multi-threaded applications. It explains how to implement shared memory that behaves "correctly" without using mutual exclusion. The different types of memory that are discussed are single-reader single-writer (SRSW), multiple-reader single-writer (MRSW) and multiple-reader multiple-writer (MRMW). This is an important chapter for non-experts to think about, as it explains how operation interleavings are not as discrete as we pretend they are and how shared memory should behave in all possible cases.
Chapter 5 - The Relative Power of Primitive Synchronization Operations
This chapter explains the varying strength of different wait-free synchronization primitives. Consensus numbers will undoubtedly confuse novice parallel programmers. In short, the higher the consensus number the better. A high consensus number, say N, for a synchronization primitive means that synchronization primitive can "correctly" solve the consensus problem for N concurrently executing threads. For example, critical sections have an infinite consensus number (e.g. support an infinite number of concurrent threads). Atomic registers have a consensus number of 1, they support only 1 thread's execution that is guaranteed to consistently and validly solve the consensus problem.
The most important point of this chapter (in my opinion) is that compare-and-swap (CAS), or compare-and-set, has an infinite consensus number (section 5.8). This is why modern instruction set architectures (ISAs) all provide CAS: it is critical to supporting an unlimited number of concurrently executing threads. Realizing the importance of CAS is vital for advanced parallel programmers who want to implement nonblocking algorithms.
Chapter 6 - Universality of Consensus
This chapter explains how to build universal consensus for your own concurrent objects. While it will be an interesting chapter for experts, novices may want to skip it.
----------------------------------------
Part II - Practice
Chapter 7 - Spinlocks and Contention
This chapter explains the important differences between different types of locking. It explains how to implement locks using assembly level operations (test-and-set and test-and-test-and-set), how to reduce bus contention using backoff, how to reduce cache pressure by having threads spin on their local cache memory and how to manage an unknown number of threads using locks.
After reading this chapter, most readers should have an appreciation for the hardware complexity of implementing something as simple as a lock. Some programmers may argue that they should not need to know how hardware behaves. While I would like to agree, the unfortunate state of multi-core programming currently requires a basic understanding of memory consistency models and cache behaviors. Herlihy and Shavit note this and make an effort to address it in a "just what you need to know" fashion, as done in this chapter.
Chapter 8 - Monitors and Blocking Synchronization
This chapter explains monitors, conditions, the differences between readers and writers, and reentrant locks. Java programmers will be especially interested in understanding monitors, while all OO programmers should have an appreciation of synchronizing an entire class. Moreover, the section on reentrant locks is simple but important to preventing deadlocks.
----------------------------------------
Unofficially, Chapters 9 - 11 focus on achieving parallelism in algorithms that have sequential bottlenecks and are therefore inherently sequential.
----------------------------------------
Chapter 9 - Linked Lists: The Role of Locking
The chapter explains how to implement ordered linked lists (e.g., IntSets or just sets) in a variety of different ways. The chapter starts out with the most basic implementation and then begins to increase performance by relaxing the strictness of the required thread synchronization.
Chapter 10 - Concurrent Queues and the ABA Problem
The chapter explains how to implement pools, a collection of unordered or ordered items. The chapter then explains the ways to implement pools as different types of queues, containers with first-in-first-out behavior. The chapter also explains a classic parallel problem known as ABA, where thread1 observes x == A, thread2 does x=B and then x=A and thread1 then observes x == A. The ABA problem is a subtle, but important problem.
Chapter 11 - Concurrent Stacks and Elimination
This chapter starts where the last chapter left off; it explains how to implement concurrent stacks, containers with first-in-last-out behavior. The chapter also explains a neat cancellation problem called elimination. Elimination is useful for avoiding overflows, underflows and other types of bounded problems.
Chapter 12 - Counting, Sorting and Distributed Coordination
This chapter explains how to take problems that seem to be inherently sequential and make them parallel. The chapter also explains both combining and diffracting trees, both of which are very interesting ways to make sequential problems parallel. This chapter is one of the more complex chapters of the text. Some readers may want to skim it.
----------------------------------------
Unofficially, Chapters 13 - 15 focus on achieving parallelism in algorithms that are inherently parallel. Readers will enjoy seeing how easy it is to extract parallelism in these naturally parallel algorithms.
----------------------------------------
Chapter 13 - Concurrent Hashing and Natural Parallelism
This chapter explains how to build parallel hash tables, with both open and closed addressing. First, the authors explain how to implement hash tables using coarse-grained locks, then with fine-grained locks, then with no locks at all. The chapter also explains how to deal with open-addressed hash tables which are particularly challenging.
Chapter 14 - Skiplists and Balanced Search
Most non-experts that make it this far in the text will be greatly rewarded by this chapter. Chapter 14 explains skiplists, an intriguing way to implement a container that has logarithmic search time and that is inherently parallel. Unlike red-black trees or balanced binary trees that yield logarithmic search time complexity, skiplists do not need to be rebalanced. Skiplists do not need to be rebalanced due to their unique algorithmic layering, making them inherently parallel. As such, skiplists have a notable benefit over their inherently sequential logarithmic search time counterparts.
This is a critically important chapter for practitioners hoping to exploit high parallelism...Read more›The Art of Multiprocessor Programming Overview
As the computer industry changes from single-processor to multiprocessor architectures, this revolution requires a fundamental change in how programs are written. To leverage the performance and power of multiprocessor programming, also known as multicore programming, you need to learn the new principles, algorithms, and tools presented in this book. It includes fully-developed Java examples detailing data structures, synchronization techniques, transactional memory, and more.

Prof. Maurice Herlihy, who coined the phrase "transactional memory," is on the faculty of Brown University. He is the recipient of the 2003 Dijkstra Prize in distributed computing. Prof. Nir Shavit is on the faculty of Tel-Aviv University and a member of the technical staff at Sun Microsystems Laboratories. In 2004 they shared the Gödel Prize, the highest award in theoretical computer science.
* THE book on multicore programming, the new paradigm of computer science* Written by the world's most revered experts in multiprocessor programming and performance* Includes examples, models, exercises, PowerPoint slides, and sample Java programs

Want to learn more information about The Art of Multiprocessor Programming?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Effective Java (2nd Edition) Review

Effective Java (2nd Edition)
Average Reviews:

(More customer reviews)
Are you looking to buy Effective Java (2nd Edition)? Here is the right place to find the great deals. we can offer discounts of up to 90% on Effective Java (2nd Edition). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Effective Java (2nd Edition) ReviewPlease see my review of the first edition for my general response. My opinion hasn't changed with the second, so I'll focus on what's new in this review.
The second edition was well worth the wait. The number of items are beefed up to 78 from 57. The chapter "Substitutes for C Constructs" is gone, but replaced by more contemporary material on "Generics" and "Enums and Annotations." Some first edition items have been amended to address features new to Java since the first edition was released. Some new items also address concurrency, favoring it over traditional Java threads. As expected, the cases for each item are methodically and persuaisvely made. If you are particularly interested in concurrency, also consider Java Concurrency in Practice.
The item discussions use boldface liberally to highlight key points, sometimes calling attention to arguments in the first edition that have been updated. If you're skimming -- the author in fact doesn't encourage cover-to-cover reading -- these highlights are useful attractors to important material you might otherwise gloss.
It's often helpful to have practices or insights you've earned on your own backed up by a reputable authority. Effective Java certainly helps with that. More importantly, the arguments that support his items are clear, easy to read, and compelling. Anyone proficient with Java would have to go a long way to find fault with them. In fact, it took considerable investigation to determine that one item from the first edition -- "Provide a readResolve method when necessary" -- was not the best advice for some cases. Bloch addresses that issue head-on in this edition, and provides its replacement ("For instance control, prefer enum types to readResolve").
As with the first edition, this one is a necessity for any serious Java developer.Effective Java (2nd Edition) OverviewAre you looking for a deeper understanding of the Java™ programming language so that you can write code that is clearer, more correct, more robust, and more reusable? Look no further! Effective Java™, Second Edition, brings togetherseventy-eight indispensable programmer's rules of thumb: working, best-practice solutions for the programming challenges you encounter every day.This highly anticipated new edition of the classic, Jolt Award-winning work has been thoroughly updated to cover Java SE 5 and Java SE 6 features introduced since the first edition. Bloch explores new design patterns and language idioms, showing you how to make the most of features ranging from generics to enums, annotations to autoboxing.Each chapter in the book consists of several "items" presented in the form of a short, standalone essay that provides specific advice, insight into Java platform subtleties, and outstanding code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why.Highlights include: New coverage of generics, enums, annotations, autoboxing, the for-each loop, varargs, concurrency utilities, and much more

Want to learn more information about Effective Java (2nd Edition)?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...