Enhancing Java Streams API with PowerList Computation

HIPS 2020, 25th International Workshop on High-Level Parallel Programming Models and Supportive Environments, held in Conjunction With 34th IEEE International Parallel and Distributed Processing Symposium, published in Proceedings of the 2020 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), pp. 375-384, DOI: 10.1109/IPDPSW50202.2020.00072, 18-22 May, 2020, New Orleans, LA, USA.

Cite as

Full paper

Enhancing Java Streams API with PowerList Computation


Virginia Niculescu*, Darius Bufnea*, Adrian Sterca*
* Department of Computer Science, Faculty of Mathematics and Computer Science, Babeș-Bolyai University of Cluj-Napoca, Romania


© 2020 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for all other uses, in any current or future media, including reprinting/republishing this material for advertising or promotional purposes, creating new collective works, for resale or redistribution to servers or lists, or reuse of any copyrighted component of this work in other works.


Since they were introduced, Java streams were very fast embraced by the industry, being currently used at a large scale. The parallelism enabled by them is very easy to achieve, but it is constrained either by the used parallelism model (in some cases), or by the set of operations that could be specified using streams. We investigate in this paper the possibility to enhance the computation types that could be defined using the Java streams API by introducing into this infrastructure the PowerList theory based computation. Powerlists are recursive data structures that together with their associated algebraic theory offer both abstractions in order to ease the development of parallel applications, and also a methodology to design parallel algorithms. The Java streaming infrastructure could be adapted to support them in a great measure. We present here such an adaptation, and we analyse and discuss the advantages and constraints. This analysis is exemplified by application examples.

Key words

parallel programming; streams; recursive structures; Java; performance; models.

BibTeX bib file



  1. K. Achatz and W. Schulte, Architecture independent massive parallelization of divide-and-conquer algorithms, Fakultaet fuer Informatik, Universitaet Ulm, 1995.
  2. M. Aldinucci, M. Danelutto, and P. Teti, An advanced environment supporting structured parallel programming in Java, Future Generation Computer Systems, vol. 19, pp. 611-626, 2003.
  3. A. S. Anand and R. K. Shyamasundarn, Scaling computation on GPUs using powerlists, in Proceedings of the 22nd International Conference on High Performance Computing Workshops (HiPCW). Oakland: IEEE, 2015, pp. 34-43.
  4. D. Kapur and M. Subramaniam, Mechanical verification of adder circuits using powerlists, Journal of Formal Methods in System Design. 1998, vol. 13 no. 2 pp. 127-158.
  5. R. Bird and O. de Moor, Algebra of Programming, Prentice Hall. 1996.
  6. R. Loogen and Y. Ortega-Mallen and R. Pena-Mari, Parallel Functional Programming in Eden, Journal of Functional Programming, 2005, no 15, pp. 431-475.
  7. K. Hammond, J. Berthold and Rita Loogen, Automatic Skeletons in Template Haskell, Parallel Processing Letters, vol.13, no 3, 2003, pp. 413-424.
  8. R. Di Cosmo, Z. Li and S. Pelagatti and P. Weis, Skeletal Parallel Programming with OcamlP3l 2.0, Parallel Processing Letters, 2008, vol. 18, no. 1 pp. 149-164.
  9. M. Cole. Parallel Programming with List Homomorphisms, Parallel Processing Letters, 1995, vol. 5, no. 2, pp. 191-203.
  10. M. Cole, Algorithmic Skeletons: Structured Management of Parallel Computation, MIT Press, 1989.
  11. D. Caromel and M. Leyton, A transparent non-invasive file data model for algorithmic skeletons, in Parallel and Distributed Processing, 2008. IPDPS 2008. IEEE International Symposium on, 2008, pp. 1-10.
  12. J. W.Cooley and J. W. Tukey, An algorithm for the machine calculation of complex Fourier series, Math. Comput., vol. 19, pp. 297-301, 1965.
  13. J. Clarkson, C. Kotselidis, G.Brown, M. Lujan, Boosting Java Performance Using GPGPUs, in International Conference on Architecture of Computing Systems, LNCS, volume 10172, 2017, pp. 59-70.
  14. J. Clarkson, J. Fumero, M. Papadimitriou, F.S. Zakkak, M. Xekalaki, C. Kotselidis, M. Lujan, Exploiting high-performance heterogeneous hardware for Java programs using graal, in ManLang ’18 Proceedings of the 15th International Conference on Managed Languages & Runtimes. ACM. Linz, Austria. Sept. 12 – 13, 2018, pp. 4:1-4:13.
  15. E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design patterns: elements of reusable object-oriented software, Boston, MA, USA: Addison-Wesley, 1995.
  16. J. Kornerup, Data structures for parallel recursion, Ph.D. dissertation, University of Texas, 1997.
  17. M. Leyton and J. M. Piquer, Skandium: Multi-core Programming with Algorithmic Skeletons, in 18th Euromicro Conference on Parallel, Distributed and Network-based Processing. IEEE, 2010, pp. 289-296.
  18. J. Misra, Powerlist: A structure for parallel recursion, ACM Trans. Program. Lang. Syst. vol. 16, no. 6, pp. 1737-1767, 1994.
  19. V. Niculescu, F. Loulergue, D. Bufnea, and A. Sterca, A Java Framework for High Level Parallel Programming using Powerlists, in Parallel and Distributed Computing, Applications and Technologies (PDCAT). IEEE, Taipei, Taiwan. 2017, pp. 255-262.
  20. V. Niculescu, D. Bufnea, A. Sterca, MPI Scaling Up for Powerlist Based Parallel Programs, in Proceedings of the 27th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP 2019), pp. 199-204, DOI: 10.1109/EMPDP.2019.8671597, February 13-15, 2019, Pavia, Italy.
  21. V. Niculescu, D. Bufnea, A. Sterca and R. Silimon, Multiway Divide and Conquer Parallel Programming based on PLists, in Proceedings of the 27th International Conference on Software, Telecommunications and Computer Networks (SoftCOM), pp. 1-6, DOI: 10.23919/SOFTCOM.2019.8903794, September 19-21, 2019, Split, Croatia.
  22. V. Niculescu, F. Loulergue, Transforming powerlist based divide&conquer programs for an improved execution model, in High Level Parallel Programming and Applications (HLPP), Orleans, France, 2018.
  23. G. L. Taboada, S. Ramos, R.R. Expsito, J. Tourio, R. Doallo, Java in the High Performance Computing arena: Research, practice and experience, Science of Computer Programming (2013), 78(5), pp. 425-444.
  24. Intel MPI Library Developer Reference for Linux OS: Java Bindings for MPI-2 Routines, [Online] https://software.intel.com/en-us/node/528792, accessed: 2020-02-10.
  25. The Java Tutorials: Fork/Join, [Online] https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html, accessed: 2020-02-10.
  26. Stream (Java Platform SE 8), [Online] https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html, accessed: 2020-02-10.
  27. R.-G. Urma, Processing Data with Java SE 8 Streams, [Online] https://www.oracle.com/technical-resources/articles/java/ma14-java-se-8-streams.html, Java Magazine, March/April 2014, accessed: 2020-02-10.
  28. B. Winterberg, Java 8 Stream Tutorial, [Online] https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/, 2017 July, accessed: 2020-02-10.

Darius Bufnea