What is gosu?
Gosu is a modern, statically‑typed programming language that runs on the Java Virtual Machine (JVM). It was created to be more expressive and easier to read than Java, while still being able to use all existing Java libraries and frameworks.
Let's break it down
- Statically‑typed: The type of each variable is known at compile time, which helps catch errors early.
- JVM‑compatible: Gosu code compiles to Java bytecode, so it can run anywhere Java runs.
- Dynamic features: It also supports dynamic typing and scripting‑style code when you want flexibility.
- Rich syntax: Includes features like type inference, extension methods, properties, and powerful templating.
- Interoperability: You can call Java code from Gosu and vice‑versa without extra wrappers.
Why does it matter?
Because it gives developers the safety and tooling of a compiled language while offering a cleaner, more concise syntax. This can speed up development, reduce bugs, and make code easier to maintain, especially in large Java‑based projects.
Where is it used?
- Guidewire Insurance Suite: The most well‑known commercial use; Gosu powers the business logic of Guidewire’s policy, billing, and claims platforms.
- Rule engines: Its expressive syntax makes it popular for writing business rules.
- Internal tooling: Companies use it for scripts, DSLs (domain‑specific languages), and custom extensions within Java applications.
Good things about it
- Seamless Java integration - reuse any Java library instantly.
- Cleaner, more readable code than Java (less boilerplate).
- Strong static typing with optional dynamic features for flexibility.
- Good IDE support (IntelliJ, Eclipse) thanks to its Java heritage.
- Built‑in support for templates and DSL creation.
Not-so-good things
- Smaller community and fewer learning resources compared to Java or Kotlin.
- Limited third‑party libraries specifically for Gosu; you rely mostly on Java ecosystem.
- Fewer job openings; expertise is niche, mainly in companies using Guidewire.
- Tooling, while decent, is not as polished as more popular JVM languages.
- Learning curve for developers accustomed only to Java, due to its extra language features.