JPPF 6.1 new features and enhancements summary
Java 8 upgrade
- as of this version, JPPF is now built and runs with Java 8 or later
- the source code no longer compiles or runs with Java 7
- the JPPFJob API was updated to facilitate the submission of tasks as lambdas
Network communication and workload distribution
Asynchronous communication between node and server
- nodes can now process any number of jobs concurrently
- this addresses the issue where some threads of a node could be idle, even when work was available
- overall performance gain due to I/O being performed in parallel with job processing
- configurable limit on the number of jobs a node can process concurrently (unlimited by default)
Client connection concurrency
- connections from a client to a driver can now handle an unlimited number of concurrent jobs
- in other words, multiple connections are no longer required to achieve job concurrency
- the concurrency level for all connections in a pool can be updated statically or dynamically
- the jobs concurrentcy documentation and sample were updated accordingly
Pluggable node throttling mechanism
- this mechanism prevents resource (e.g. heap, cpu) exhaustion in the node, due to too many concurrent jobs. When a condition is reached, the node refuses new jobs. When the condition no longer applies, the node accepts jobs again.
- it can also be used to limit the workload based on any condition, for instance based on time windows or the status of external services
- A built-in implementation provides throttling based on heap usage
Management and Monitoring
JVM health monitoring enhancements
- new monitored data elements were added: peak threads count, total started threads count and JVM uptime
- custom value converters can now be associated with each monitored datum, to enable customized rendering of their value
Node provisioning notifications
- the node provisioning service of each master node now emits JMX notifications each time a slave node is started or stopped.
Job and Client APIs
Preference execution policy
- the new preference policy attribute, in the job SLA, defines an ordered set of execution policies, such that eligible channels or nodes will be chosen from those that satisfy the policy with the foremost position.
New job SLA attributes
- maximum driver depth: in a multi server topology, an upper bound for how many drivers a job can be transfered to before being executed on a node (server-side SLA)
- maximum dispatch size: the maximum number of tasks in a job that can be sent at once to a node (driver-side SLA) or to a driver (client-side SLA). This overrides the dipsatch size computed by the load-balancer
- allow multiple dispatches to the same node (driver-side SLA) or driver (client-side SLA): a flag to specifiy whether a job can be dispatched to the same node or driver multiple times at any given moment
New convenience execution policies
- New execution policies were added, to simplify policies with a cumbersome syntax. As an example,
new IsMasterNode()
nicely replacesnew Equals("jppf.node.provisioning.master", true)
. - See IsMasterNode, IsSlaveNode, IsLocalChannel, IsPeerDriver
New MavenLocation class
- MavenLocation is a Location implementation which allows downloading artifacts from any maven repository.
Consequently, MavenCentralLocation is now a specialized subclass pointing to the Maven Central repository.
Deprecation of the "blocking" job attribute
- a job should be submittable either synchronously or asynchronously, regardless of its state and at the user's choice at the time of submission. To this effect, the job's "blocking" attribute was deprecated. So was the JPPFClient.submitJob() method, now replaced with JPPFClient.submit() and JPPFClient.submitAsync().
Miscellaneous features and enhancements
Embedded drivers and nodes
- it is now possible to start a driver and or a node programmatically
- a driver and node embedded in the same JVM share common resources such as thread pools, JMX remote connector server, NIO acceptor (connections) server, etc.
- a new dedicated sample was implemented
Offline documentation (PDF)
- the source documents (.odt) were regrouped into a single document, in order to fix the broken cross-document links in the produced PDF
- the font and background for code snippets were changed to improve readability
Feature removals
Following the move of JPPF to Java 8, we deeply regret to announce the removal of two integration features:
- .Net bridge: the jni4net project, on which the .Net bridge is based, is no longer actively maintained and does not support some of the Java 8 language constructs
- Android port: we no longer have the bandwidth to maintain the Android node integration. In particular: porting to a version of Android which supports Java 8 language features.
All implemented issues
Features
- JPPF-548 Drop support for JDK 7 and switch to JDK 8 or later
- JPPF-549 Asynchonous communication between server and client
- JPPF-558 Node provisioning notifications
- JPPF-562 Fix the preference execution policy
- JPPF-563 Make the JPPF driver and node not singletons
- JPPF-564 Asynchronous communication betwen node and driver
- JPPF-566 New sample: embedded grid
- JPPF-569 New job SLA attributes
- JPPF-570 Accessing the job from a task
- JPPF-573 Pluggable mechanism to warn the driver when a node can't accept any more job
- JPPF-575 IsMasterNode, IsSlaveNode and other convenience execution policies
Enhancements
- JPPF-433 Add missing value snapshots to the server statistics
- JPPF-552 Improve job API to enable tasks as lambdas
- JPPF-576 Client methods for sync and async job submission, deprecation of blocking job flag
- JPPF-577 JVM health monitoring enhancements
- JPPF-578 Allow jppf-admin-web jar dependency as alternative to war to make embedding possible
- JPPF-579 Monitoring data providers: ability to configure a value converter for each datum
- JPPF-580 Allow MavenCentralLocation or a subclass to get artifacts from different repositories, including snapshots
Tasks
- JPPF-565 Feature removals
- JPPF-572 Performance, endurance and stress testing
- JPPF-574 Reorganize the documentation into a single LibreOffice document
Links
Prior JPPF 6.1 preview releases: JPPF 6.1 beta - JPPF 6.1 alpha 2 - JPPF 6.1 alpha
JPPF Links: Web Site - Downloads - Documentation - User forums - Issue tracker