Cyril de Catheu

October 26, 2025

Javelit Diary #01 - Naming (and renaming) this project

New here? Javelit is Streamlit for Java. Find it on GitHub.

New articles about Javelit! 

This week Guillaume Laforge from Google Cloud shared not one, but two articles about Javelit!
- Building a Nano Banana playground webapp using the Gemini GenAI SDK
- Building a chatbot interface with LangChain4j
Very cool! Check them out!

New in Javelit

Javelit just got 5 new components: 
- warning, success, and info status
- header and subheader
status_and_headers.png

According to the statistics computed from Streamlit projects I presented last week, these components are often used! I hope they'll be useful to Javelit's users.

The developer experience has also been improved.
Have you ever spent minutes trying to understand why a component is not appearing in your app, just to realize you forgot to call .use() on it? I did! Javelit now detects this mistake and warns you in the app: 

// works fine
Jt.text("Hello").use();

// I forgot to call .use() !  
Jt.markdown("World");

By the way, I made sure the code for this toast element is reusable for a future toast component.

The message when the app is empty is now more helpful:
empty_app.png

The compilation failure modal was improved:
compilation_error.png


The hot-reload experience was also improved, I'll write about it next week! 

Naming and renaming this project  

This project was originally called Jeamlit. I didn't put too much thought into this name, as I needed something quick. The project has container, layout and component abstractions. There are already so many projects using these abstractions. Adding yet another class named "Container" is not kind to the IDE auto-imports and the developer experience:
container_classes.png

                                                       The list goes on... 
so I wanted a simple prefix I could add to all classes of the public API.
I took Streamlit, java-ified the name a bit and tadam! Jeamlit was born. Not creative but good enough: 
jt_api_2.png

                                                    IDE friendly API

I bought the jeamlit.io, .app, and .com domains and moved on. I even shared the project on Reddit under the Jeamlit name.
Why the last minute change, then? Let's say an email from Streamlit's legal team convinced me I could find something better 😉 
I didn't want to change the prefix though. Renaming the classes in the code and the package name was simple, but updating the documentation was painful and error-prone. This means I had to find a name looking like J______t.
I quickly thought about Javelot, which is the French word for Javelin and incidentally starts like Java, but the domains were already taken by a tech project.
I ended up with Javelit because it was close and the domain names were available.

So here goes my alternate-reality official rationale for the Javelit name: 

"Javelot is the French word for Javelin. A javelin is light and fast. This project is lit. Javelit."

Yes. Sorry.

That's all for this week. The next weeks will get more technical as I'll explain how the hot-reload is implemented in Javelit. Unlike most Java hot-reload mechanisms, Javelit supports adding dependencies, files, and classes on the fly. This involves interesting trade-offs and design considerations. Stay tuned! 

Take care.
Cyril

Thanks for reading. No AI was used in any way to write this blog. I am not a native English speaker. I'd be happy to get your (human) feedback on the writing. 

About Cyril de Catheu

The Javelit Dev Diary