Framework Features
Everything you need to build modern, real-time web applications with Java.
Why Developers Choose Oorian
A unique approach to Java web development that gives you flexibility without sacrificing productivity.
Wrap Best-of-Breed Libraries
Use Webix, SyncFusion, WebAwesome, or ECharts. Get enterprise-grade UI components maintained by specialists—not reinvented wheels.
JDK-Style Event Model
Handle browser events with familiar listener patterns—just like Swing or JavaFX. Every extension uses consistent conventions for configuration and data binding.
Flexible Communication
Choose AJAX, AJAX + SSE, or WebSocket per page. Simple request-response when that's enough, server push when you need it, full real-time when you want it.
Pure Java Development
Write your entire application in Java—UI included. Leverage inheritance and polymorphism to build reusable controls. Type-safe, debuggable, OOP throughout.
No Vendor Lock-In
Unlike Vaadin or ZK, you're not locked into proprietary components. Switch UI libraries or mix them as your needs evolve.
Lightweight Architecture
Simple JSON messaging across all communication modes. No heavy client-side framework, no complex build tools. Just clean, understandable communication.
Production Proven
Not a prototype—Oorian powers iGradePlus, a 500k+ line commercial SaaS with hundreds of pages, in production for 10+ years.
Built-in JSON & XML
Native support for JSON and XML parsing, generation, and manipulation. No external libraries needed for common data formats.
Server-Side Worker Threads
Run background tasks on the server with automatic UI updates when complete. Long-running operations never block the user interface.
HTML Template Support
Integrate traditional HTML templates when needed via HtmlTemplatePage. Mix programmatic and template-based approaches as your project requires.
Built-in HTML & CSS Parsers
Parse and manipulate HTML and CSS programmatically. Transform existing markup or generate dynamic styles with full parser support.
Full URL Parameter Support
Complete support for query parameters, path variables, and URL routing. Build RESTful applications with clean, bookmarkable URLs.
Core Capabilities
Flexible Communication Options
Configure each page to use AJAX, AJAX + SSE, or WebSocket based on your needs. Simple forms can use AJAX, dashboards can use SSE for server push, and collaborative apps can use WebSocket for full bidirectional communication.
- AJAX for simple request-response
- SSE for server-initiated updates
- WebSocket for real-time bidirectional
- Configure per-page, mix as needed
Component-Based Architecture
Build your UI with composable Java components. Every HTML element is a first-class Java object with type-safe properties and methods.
- Type-safe element construction
- Reusable custom components
- Full IDE autocomplete support
- Compile-time error checking
Flexible Styling System
Apply CSS styles programmatically or via classes. The StyledElement base class provides fluent methods for all CSS properties.
- Fluent CSS API
- Dynamic style updates
- CSS class management
- State-based styling (hover, active, disabled)
Server-Side Event Handling
Handle all UI events on the server. Mouse clicks, keyboard input, form submissions—everything is processed by your Java code.
- Mouse and touch events
- Keyboard events with key codes
- Form and input events
- Custom server events
How Oorian Works
Your Java code creates and manipulates element objects. Oorian serializes changes as JSON and sends them via your chosen transport—AJAX, SSE, or WebSocket. The browser applies updates to the DOM. Events flow back to your server-side handlers. It's transparent, efficient, and requires no client-side coding.
UI Library Integration
Each extension follows a consistent pattern: Java objects that configure and control JavaScript components. You get enterprise-grade UI without building it yourself.
// SyncFusion DataGrid example
SfDataGrid grid = new SfDataGrid();
grid.setDataSource(customers);
grid.setAllowPaging(true);
grid.setAllowSorting(true);
grid.setAllowFiltering(true);
// Add columns
grid.addColumn("name", "Customer Name");
grid.addColumn("email", "Email Address");
grid.addColumn("status", "Status");
// Handle selection
grid.registerListener(this, RowSelectedEvent.class);
container.addElement(grid);Developer Experience
Full IDE Support
Autocomplete, refactoring, and navigation work perfectly. Your IDE knows every element, property, and method.
Easy Debugging
Set breakpoints in your event handlers. Step through your UI logic. No browser dev tools required.
Hot Reload Compatible
Works with JRebel and similar tools. Change your Java code and see updates without restarting.
Familiar Patterns
If you know Java and HTML/CSS, you already know Oorian. No new templating language to learn.