skip to main content
10.1145/2500828.2500837acmconferencesArticle/Chapter ViewAbstractPublication PagespppjConference Proceedingsconference-collections
research-article

Feel different on the Java platform: the star programming language

Published: 11 September 2013 Publication History

Abstract

Star is a functional, multi-paradigm and extensible programming language that runs on the Java platform. Starview Inc. developed the language as an integral part of the Starview Enterprise Platform, a framework for real-time business applications such as factory scheduling and data analytics. Star borrows from many languages, with obvious heritage from Haskell, ML, and April, but also contains new approaches to some design aspects, such as syntax and syntactic extensibility, actors, and queries. Its texture is quite different from that of other languages on the Java platform. Despite this, the learning curve for Java programmers is surprisingly shallow. The combination of a powerful type system (which includes type inference, constrained polymorphism, and existentials) and syntactic extensibility make the Star well-suited to producing embedded domain-specific languages. This paper gives an overview of the language, and reports on some aspects of its design process, on our experience on using it in industrial projects, and on our experience implementing Star on the Java platform.

References

[1]
G. Agha and C. Hewitt. Concurrent programming using actors. In A. Yonezawa and M. Tokoro, editors, Object Oriented Concurrent Programming. MIT Press, 1987.
[2]
Joe Armstrong, Robert Virding, and Mike Williams. Concurrent Programming in Erlang. Prentice Hall, NY, 1993. ISBN 0-13-285792-8.
[3]
John L. Austin. How to do things with words. Oxford: Clarendon, 1962.
[4]
Annette Bieniusa and Peter Thiemann. How to CPS transform a monad. In Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, CC '09, pages 266--280, Berlin, Heidelberg, 2009. Springer-Verlag. ISBN 978-3-642-00721-7.
[5]
Andrey Breslav. Language of the month: Kotlin. Dr. Dobb's, http://www.drdobbs.com/jvm/language-of-the-month-kotlin/232600836, January 2012.
[6]
Eric Bruneton, Romain Lenglet, and Thierry Coupaye. ASM: a code manipulation tool to implement adaptable systems. In Adaptable and extensible component systems, Grenoble, France, November 2002.
[7]
William Clinger and Jonathan Rees. Macros that work. In Proceedings 1991 ACM SIGPLAN Symposium on Principles of Programming Languages, pages 155--162, Orlando, FL, January 1991. ACM Press.
[8]
T. Finin, J. Weber, G. Wiederhold, M. Genesereth, R. Fritzson, D. McKay, J. McGuire, R. Pelavin, S. Shapiro, and C. Beck. DRAFT specification of the KQML Agent Communication Language. The DARPA knowledge sharing initiative External Interfaces Working Group, 1993.
[9]
FIPA. The foundation of intelligent physical agents. http://www.fipa.org/.
[10]
Charles Forgy. Rete: A fast algorithm for the many pattern/many object pattern match problem. Artificial Intelligence, 19(1):17--37, 1982.
[11]
Cédric Fournet and Georges Gonthier. The reflexive CHAM and the join-calculus. In Proceedings of the 1996 ACM SIGPLAN Symposium on Principles of Programming Languages, pages 372--385, St. Petersburg, FL, USA, January 1996. ACM Press. ISBN 0-89791-769-3.
[12]
Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. Java Concurrency in Practice. Addison-Wesley, 2006.
[13]
Philipp Haller and Martin Odersky. Scala actors: Unifying thread-based and event-based programming. Theoretical Compututer Science, 410(2-3):202--220, 2009.
[14]
Rich Hickey. The Clojure Programming Language. In Proceedings of the 2008 Symposium on Dynamic Languages. Paphos, Cyprus, 2008.
[15]
Tony Hoare. Null references: The billion dollar mistake. http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare, August 2009. Talk at QCon 2009, San Francisco.
[16]
John Hughes. Generalising monads to arrows. Science of Computer Programming, 37:67--111, May 2000.
[17]
Richard Johnson, David Pearson, and Keshav Pingali. The program structure tree: Computing control regions in linear time. In ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI), Orlando, Florida, June 1994.
[18]
Mark P. Jones. A theory of qualified types. In Bernd Krieg-Brückner, editor, Proceedings 4th European Symposium on Programming '92, volume 582 of Lecture Notes in Computer Science, pages 287--306, Rennes, France, February 1992. Springer-Verlag.
[19]
Mark P. Jones. Type classes with functional dependencies. In Gert Smolka, editor, Proceedings 9th European Symposium on Programming, volume 1782 of Lecture Notes in Computer Science, pages 230--244, Berlin, Germany, March 2000. Springer-Verlag. ISBN 3-540-67262-1.
[20]
Dierk König, Guillaume Laforge, Paul King, Cédric Champeau, Hamlet D'Arcy, Erik Pragt, and Jon Skeet. Groovy in Action. Manning, 2nd edition, 2013.
[21]
T. Lindholm, F. Yellin, G. Bracha, and A. Buckley. The Java Virtual Machine Specification: Java SE, 7 Edition. Always learning. Prentice Hall PTR, 2013. ISBN 9780133260441.
[22]
David Luckham. Event Processing for Business: Organizing the Real-Time Enterprise. John Wiley & Sons, Hoboken, New Jersey, 2012. ISBN 978-0-470-53485-4.
[23]
F. G. McCabe and K. L. Clark. April - agent process interaction language. In M. Wolldridge N. Jennings, editor, Intelligent Agents, Lecture Notes on Artificial Intelligence, vol 890. Springer-Verlag, 1995.
[24]
Erik Meijer, Brian Beckman, and Gavin Bierman. LINQ: reconciling object, relations and XML in the .NET framework. In Proceedings of the 2006 ACM SIGMOD International Conference on Management of Data, SIGMOD '06, pages 706--706, New York, NY, USA, 2006. ACM. ISBN 1-59593-434-0.
[25]
Martin Odersky, Lex Spoon, and Bill Venners. Programming in Scala. Artima, 2nd edition, December 2010.
[26]
Vaughan R. Pratt. Top down operator precedence. In Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages, POPL '73, pages 41--51, New York, NY, USA, 1973. ACM.
[27]
Jon Rafkind and Matthew Flatt. Honu: syntactic extension for algebraic notation through enforestation. In Klaus Ostermann and Walter Binder, editors, GPCE, pages 122--131. ACM, 2012. ISBN 978-1-4503-1129-8.
[28]
John Reppy, Claudio V. Russo, and Yingqi Xiao. Parallel Concurrent ML. SIGPLAN Not., 44(9):257--268, August 2009. ISSN 0362-1340.
[29]
John H. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999.
[30]
John Rose. Tail calls in the JVM. Blog post, July 2007. https://blogs.oracle.com/jrose/entry/tail_calls_in_the_vm.
[31]
John R. Rose. Bytecodes meet combinators: invokedynamic on the JVM. In Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages, VMIL '09, pages 2:1--2:11, New York, NY, USA, 2009. ACM. ISBN 978-1-60558-874-2.
[32]
Andreas Rossberg, Claudio V. Russo, and Derek Dreyer. F-ing modules. In Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation, TLDI '10, pages 89--102, New York, NY, USA, 2010. ACM. ISBN 978-1-60558-891-9.
[33]
J. R. Searle. Speech acts: an essay in the philosophy of language. Cambridge University Press, 1969.
[34]
Guy L. Steele. Tail calls on the JVM. Personal communication, May 1996.
[35]
Don Syme, Tomas Petricek, and Dmitry Lomov. The F# asynchronous programming model. In Proceedings of the 13th International Conference on Practical Aspects of Declarative Languages, PADL'11, pages 175--189, Berlin, Heidelberg, 2011. Springer-Verlag. ISBN 978-3-642-18377-5.
[36]
Rob von Behren, Jeremy Condit, and Eric Brewer. Why events are a bad idea (for high-concurrency servers). In Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9, HOTOS'03, Berkeley, CA, USA, 2003. USENIX Association.
[37]
Philip Wadler. Monads for functional programming. In Advanced Functional Programming, volume 925 of Lecture Notes in Computer Science, pages 24--52. Springer-Verlag, May 1995.
[38]
Philip Wadler, Walid Taha, and David MacQueen. How to add laziness to a strict language without even being odd. In 1998 ACM SIGPLAN Workshop on ML, pages 24--30, Baltimore, Maryland, September 1998.
[39]
Michael Wooldridge. An Introduction to MultiAgent Systems. Wiley, 2nd edition, June 2009. ISBN 0470519460.

Cited By

View all
  • (2021)A Study of Call Graph Construction for JVM-Hosted LanguagesIEEE Transactions on Software Engineering10.1109/TSE.2019.295692547:12(2644-2666)Online publication date: 1-Dec-2021

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PPPJ '13: Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
September 2013
188 pages
ISBN:9781450321112
DOI:10.1145/2500828
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 September 2013

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. actors
  2. compilation
  3. functional programming
  4. multiparadigm programming

Qualifiers

  • Research-article

Conference

PPPJ '13
PPPJ '13: virtual machines, languages, and tools
September 11 - 13, 2013
Stuttgart, Germany

Acceptance Rates

Overall Acceptance Rate 29 of 58 submissions, 50%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)0
Reflects downloads up to 19 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2021)A Study of Call Graph Construction for JVM-Hosted LanguagesIEEE Transactions on Software Engineering10.1109/TSE.2019.295692547:12(2644-2666)Online publication date: 1-Dec-2021

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media