Ho appena finito di leggere questo articolo che afferma che il framework Java Fork-Join non va bene per quasi tutte le attività realistiche. Sembra essere in gamba, ma non mi sento qualificato per dire se ha ragione o no. Per citare la conclusione:
The F/J framework is lacking as an API
- It is deficient in “characteristics of a good API” (Joshua Bloch)
The F/J framework is severely inadequate as an application service
- It is only available as an embedded server, no remote object access such as RMI
- It is only recommended for aggregate data operations.
- It is only recommended for users with very large data structures (humongous arrays)
- It is only useful for machines with profuse processors (16+ recommended)
- It is only useful for one request at a time
- It is only useful for strictly limited processing (recommended)
- must be plain (between 100 and 10,000 basic computational steps in the compute method)
- compute intensive code only
- no blocking
- no I/O
- no synchronization
- It has no logging or alerting
- It has no error/stall recovery
- It has no ability to display/alter the current execution status
- It relies on academic correctness rather than maintainability
- It lacks scope
- Its multi-tasking is faulty
- It is inefficient
- It cannot not scale to hundreds of processors
- It is complex to the point of being incomprehensible
- There is no user manual, just JavaDoc
The minuscule benefits of the F/J framework do not outweigh
- the bloat this experiment adds to the Java™ run time for non fork-join users
- the restrictions for developers looking to parallelize their software especially with JDK1.8
The F/J framework is an inadequate academic experiment underpinning a research paper, not a lightweight framework. It does not belong in the JDK.
Qualcuno può qui con una migliore comprensione di questo commento?