Happy Java Library Icon

Happy Java Library

Multilock, Collections, Controllers, Delegates, Generators, Streams

4 Downloads (This Week)
Last Update:
Download happy-library-1.3.zip
Browse All Files

Description

Helps to develop and test event-based multi-threaded Java application. Because of method called as API-Evolution the Happy Java Library is fully downward compatible. The library contains following functionality: MultiLock, Parallel loops, Collections, Controllers, Generators, Delegates, Streams.

Happy Java Library Web Site

Features

  • MultiLock-MultiSynchronization - avoid deadlocks by synchronizing many locks in one atomic operation.
  • Parallel.For & Parallel.ForEach loops
  • Event based collections - register events like OnBeforeAddEvent or OnAfterRemoveEvent (java.util.Collection, -List, -Set, -Map)
  • Partly Unmodifiable - decorate the collection, list, set, map by allowing for example only add new elements but nor removing any existing (java.util.Collection, -List, -Set, -Map)
  • Cache collections - decorates java.util.Collection, -List, -Set, -Map which caches often used elements and improves the performance during searching of elements in many cases.
  • Synchronized collections - Happy synchronization-collections differs from standard java.util.Collections.synchronizedList(), -Map(), -Set() decorators by managing of synchronization lock inside public API. In that way hierarchical synchronization mechanisms which allows to synchronize the collections around foreign lock from outside.
  • Buffered Collections - You can revert any changes made to your collection since last commit. If you commit changes made to buffered collection decorator, the decorated collection will be modified.
  • Transient Collections - if stored elements in a transient collection will be not used for long period of time, they will be removed. This reduces the memory and processor requirements.
  • Data Collections - This map can adapt the data from data-sources like data-base or webservice and provide abstract management of elements in bounded data-source.
  • SortedList - the decorator which decorates java.util.List to be sorted. There are two strategies implemented: (1) Linked and (2) Divide and Conquer. The Sorted List can increase the performance of the List dramatically (more than 20 times),
  • SetList - decorates java.utli.List to be java.util.Set. Sometimes can be useful if you want use List methods like List.listIterator(int index) but don’t want allow duplicates in your List.
  • Controllers-control your processes, for example a download, upload or solving process.
  • Delegates-Observer Design Pattern implementation - similar to .NET Delegates.
  • Generators-Often you need to generate random data. For example random integer value between 35 and 60. Or a String of the length between 5 and 10 letters. The generator package is designed to simply generate such random values..
  • Event based Input-& OutputStreams - register events like getOnWriteEvent or getOnReadEvent to observe decorated input & output streams. Events will be fired after defined timeDelay or after specified number of readed or written bytes.
  • Cancelable Input-& OutputStreams - Decorated your streams to be cancleable, thus after cancel an IOException will be fired if anybody tries to use decoated streams.
  • Blocking Input-& OutputStreams - Blocking Input & OutputStreams adds new block() method which allows to wait until the write or read operations on the streasm are completed.
  • Stopable InputStreams - this stream allows to cancel the decorated stream. You can stop this stream at any time. The decorator waits for decorated Stream in extra thread and if you stop this stream returns immediately.
  • API-Evolution downwardly compatibility of API

Update Notifications





Additional Project Details

Intended Audience

Developers, Science/Research

Programming Language

Java

Registered

2009-12-29
Screenshots can attract more users to your project.
Features can attract more users to your project.

Icons must be PNG, GIF, or JPEG and less than 1 MiB in size. They will be displayed as 48x48 images.