Published in


Smalltalk or Java? Why not both!

Learn how Smalltalk and Java both influenced Eclipse Collections and can help you grow as a developer.

Pharo 10.0 and Intellij IDEA 2022.1
Pharo 10.0 and Intellij IDEA 2022.1

Taking a walk with Smalltalk

On May 12, 2022, I gave a talk titled “Smalltalk or Java? Why not both!” at the Pittsburgh Java User Group. The meetup was hosted by Sirisha Pratha and Rinat Gatyatullin. The talk was recorded and is available now on the Pittsburgh JUG YouTube channel(video linked below). I demoed some language and library features switching back and forth between Smalltalk and Java/Eclipse Collections code examples using Pharo 10.0 and IntelliJ IDEA 2022.1.

The talk was a lot of fun for me. It’s been 22 years since I programmed in Smalltalk professionally. I was asked by an attendee which Smalltalk I used previously. I answered that I programmed in IBM VisualAge for Smalltalk. I also mentioned that I started learning Java using IBM VisualAge for Java, which was implemented in VisualAge for Smalltalk. VisualAge for Java would eventually evolve into the Eclipse IDE, which was open sourced by IBM over 20 years ago.

Four decades and counting as a developer

I’ve been programming for 40 years. Here’s a list of most of the languages I have programmed in.

40 years of programming language experience
Programming experience from the early 1980s to the early 2020s

3 Decades, 3 Languages and 3 Lambda Syntaxes

Over the past 30 years, I have programmed professionally in three different languages that have had a lasting impact in my thought process as a developer. All three of these languages have support for lambdas.

Lambda syntax for Clipper 5.x, Smalltalk and Java 8+
Lambda syntax for Clipper 5.x, Smalltalk and Java 8+

During the talk, I explained I could never see myself programming in a language without support for lambdas again.

Blog References

I referenced the following blog links during the talk. The code I shared in the live coding sessions are available in the blogs. I also explain in some detail how to get up and running using the Pharo Smalltalk IDE.


Java with Eclipse Collections

Both Smalltalk and Java

Eclipse Collections = Smalltalk + Java

Eclipse Collections is a bridge built between two amazing programming worlds. Here’s a table that explains the influence both programming languages have had on the evolution of the now 18 year old open source Java library.

Smalltalk and Java influences on Eclipse Collections
The best of both worlds in Eclipse Collections

My Pharo Playground from the talk

The following is a snapshot of the Pharo playground I used as a REPL to highlight and execute code. The output in the Transcipt in the image is the result of executing the highlighted code. I noted how Interval is inclusive in Smalltalk, and when you use a fractional step by, Smalltalk automatically reduces fractions when it can. I mentioned that we have Interval, IntInterval and LongInterval in Eclipse Collections.

Pharo Smalltalk Playground code examples from talk
Pharo Smalltalk Playground

Learn Multiple Languages

Learning multiple languages can help us grow as developers. There are a lot of programming languages to learn out there. I believe there is as much value, if not more, in learning classic languages like Lisp and Smalltalk as there is in learning the shiny new programming languages. The classic languages like Lisp and Smalltalk continue to evolve and solve new problems. In preparing for this talk, I learned some new things I didn’t know about Smalltalk as well as some cool features in the Pharo Smalltalk IDE. The Collections API in Pharo Smalltalk seems to be continuing to evolve. I hope by giving more talks like this, the Java and Smalltalk communities can learn about new things that we have implemented in Eclipse Collections.

I hope to implement a Lazy Iterable library for Pharo Smalltalk in the future. I will open source the library of course, once I get around to it.

Sharing is caring.

I will post a link to the video from the talk here once it is available on YouTube. Stay tuned!

Update: The Video

I am a Project Lead and Committer for the Eclipse Collections OSS project at the Eclipse Foundation. Eclipse Collections is open for contributions. If you like the library, you can let us know by starring it on GitHub.




A humble place to learn Java and Programming better.

Recommended from Medium

When we have package by feature, do we need layers?

🕵🏻‍♂️ New Airdrop: MetaCelor (New Round)

When Feedback Doesn’t Correct the Situation

Vite Bi-weekly Report

Apache Spark Examples with Amazon EMR and S3 Services using Jupyter Notebook

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Donald Raab

Donald Raab

Java Champion. Creator of the Eclipse Collections OSS Java library ( Inspired by Smalltalk. Opinions are my own.

More from Medium

Explain the KUBERNETES to 5 years old.

Java Functional Programming — Part 2

Learning Java: Interfaces

Print names of test methods executed by JUnit 5