No Vendor Lock-In
Use the best library for each job. Switch when better options emerge.
The Lock-In Problem
Traditional Java web frameworks trap you in their component ecosystems.
Proprietary Components
Vaadin and ZK build their own components. You can only use what they provide.
Limited Choice
Need a feature their grid doesn't have? Too bad. Build it yourself or wait for them.
Expensive Licensing
Premium components often require expensive commercial licenses for basic features.
No Interoperability
Can't mix components from different vendors. One ecosystem, take it or leave it.
Slow Updates
Waiting for the vendor to add features or fix bugs. You're on their timeline.
Migration Nightmare
Switching frameworks means rewriting everything. You're stuck.
The Oorian Approach
Oorian wraps existing libraries instead of building its own. You choose the components.
Mix and Match
Use SyncFusion for grids, ECharts for charts, Webix for forms. Best tool for each job.
Easy Switching
Don't like one library? Switch to another. Same Oorian patterns, different implementation.
Best-of-Breed
Each library is maintained by specialists. Get enterprise quality without building it yourself.
Flexible Licensing
Choose components with licensing that fits your needs. Some are free, some commercial.
Rapid Updates
Libraries update independently. Get new features as they're released.
Smooth Migration
Add new libraries without rewriting. Gradually adopt new technologies.
Flexibility in Action
Mix libraries from different vendors in the same application.
@Page("/dashboard")
public class DashboardPage extends HtmlPage
{
@Override
protected void createBody(Body body)
{
// SyncFusion for the data grid
SfDataGrid ordersGrid = new SfDataGrid();
ordersGrid.setDataSource(orders);
ordersGrid.setAllowPaging(true);
// ECharts for the revenue chart
EChart revenueChart = new EChart();
revenueChart.setOption(createRevenueChartOption());
// Webix for the sidebar form
WxForm filterForm = new WxForm();
filterForm.addElement(new WxDatepicker("startDate"));
filterForm.addElement(new WxDatepicker("endDate"));
// Bootstrap for layout
BsContainer container = new BsContainer();
BsRow row = container.addRow();
row.addColumn(3).addElement(filterForm);
row.addColumn(9).addElement(ordersGrid);
body.addElement(container);
body.addElement(revenueChart);
}
}