Framework Features
You shouldn't need five languages to build a business application.
Pure Java Development
Write your entire application in Java—UI included. Leverage inheritance and polymorphism to build reusable controls. Type-safe, debuggable, OOP throughout.
Unified, Lightweight Architecture
Simple JSON messaging across all communication modes. No heavy client-side framework, no complex build tools. Just clean, understandable communication.
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.
Component-Based Architecture
Build your UI with composable Java components. Every HTML element is a first-class Java object with type-safe properties, intuitive methods, and full IDE support.
Full HTML5 Element Support
Java classes for every HTML5 element—Div, Table, Form, Canvas, and more. Construct type-safe HTML entirely in Java with compile-time checking.
Versatile Styling System
Apply CSS styles programmatically with fluent methods for all CSS3 properties. Use CssStyleSheet, CssRule, and CssMediaQuery to build responsive designs entirely in Java.
Flexible Communication Options
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.
Page Annotation Routing
Simple @Page("/path") annotation for route definition. Clean, declarative routing with support for path variables and wildcard patterns.
Full URL Parameter Support
Complete support for query parameters, path variables, and URL routing. Build RESTful applications with clean, bookmarkable URLs.
Form Handling & Validation
OorianForm with FormListener pattern for type-safe form processing. Built-in validation framework with annotation-based rules and error reporting.
Drag and Drop Support
Built-in DragDropEvent and DragDropListener for intuitive drag-and-drop interactions. Configure draggable sources and drop targets entirely in Java.
Built-in Container & Layout Components
Deck, TabPanel, SplitPanel, and other layout containers for organizing complex UIs. Build multi-view applications with built-in navigation patterns.
170+ UI Extensions & Add-Ons*
Integrate best-of-breed JavaScript UI libraries through lightweight Java wrappers. Use Syncfusion, Webix, Chart.js, Leaflet, and more—all with consistent Oorian conventions.
Browser API Integration
Access browser capabilities like clipboard, geolocation, notifications, and local storage from Java. Client-side operations when you need them, without writing JavaScript.
Server-Side Worker Threads
Run background tasks on the server with automatic UI updates when complete. Long-running operations never block the user interface.
Data Binding, Data Providers, & Dependency Injection
Connect UI components to data sources with providers and binding. Built-in dependency injection for clean, testable application architecture.
Session Management
OorianSession with configurable idle and absolute timeouts, secure cookie defaults, and per-page timeout overrides for sensitive operations.
Lightweight Configuration System
Simple properties-based configuration with sensible defaults. No XML boilerplate—just set what you need and let Oorian handle the rest.
Comprehensive Security
CSRF protection, auto-escaping output, secure cookies, rate limiting, and security headers. OWASP-aligned protections enabled by default.
Logging & Error Handling
Integrated logging framework with structured error handling. Centralized exception management with customizable error pages and diagnostic output.
Application Monitoring
OorianMonitor provides health checks, performance metrics, Prometheus-compatible export, admin dashboard, and configurable alert callbacks.
WCAG Accessibility Support
Type-safe ARIA attributes, skip links, focus management, and live regions. Build inclusive applications that meet WCAG compliance standards.
Internationalization
Built-in support for multi-language applications with locale-aware formatting, resource bundles, and right-to-left layout support.
Native JSON, XML & Markdown
Built-in JSON, XML, and Markdown parsing, generation, and manipulation. No external libraries needed for common data formats.
Standalone HTML Generation
Use Oorian as a library to generate HTML for emails, newsletters, and reports. No web server required—just clean, programmatic HTML generation.
HTML Template Support
Integrate traditional HTML templates when needed via HtmlTemplatePage. Mix programmatic and template-based approaches as your project requires.
Self-Contained Web Apps (LaunchPad)
Deploy Oorian applications as a single executable JAR with embedded Jetty server. No external application server required—just compile and run.
Platform Independent
Write once, deploy on J2EE or Jakarta EE. OorianCommonLib has zero servlet API dependencies—thin adapters handle the rest.
Production Proven
Not a prototype—Oorian powers iGradePlus, a 500k+ line commercial SaaS with hundreds of pages, in production for 10+ years.
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.
*Extensions are being progressively rolled out. See the roadmap for availability.
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
Intuitive Programming Model
If you know Java and HTML/CSS, you already know Oorian. Elements are objects, styles are methods, events are listeners — no new syntax to learn.
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.
Batteries Included
Security, communications, error handling, accessibility, and internationalization are built in — so you can focus on your application, not reinventing infrastructure.
No Build Tools Required
No webpack, npm, or complex frontend toolchain. Just compile your Java code and run. Simple as it should be.
No JavaScript Required
Write everything in Java. No context switching, no JS debugging, no hunting through browser consoles.