TL;DR
- Package a Java or Linux application as a container image, run it as an ephemeral pod on Oracle Container Engine for Kubernetes (OKE), and stream it to any HTML5 browser through Thinfinity. No fat client, no per-user VM.
- Three layers, three jobs: OKE orchestrates pods and elasticity, Thinfinity Workspace brokers the browser session behind Universal ZTNA, and Thinfinity Cloud Manager provisions the environment and enforces autoscaling and cost policy.
- The economics shift from standing per-user capacity to concurrent sessions, with schedule-based scale-down off-hours and pay-per-pod pricing on virtual nodes.
- Security comes from zero inbound ports, MFA and SSO/SAML, RBAC, session recording, per-session pod isolation, and Workload Identity for least-privilege access to OCI secrets and storage.
- It is a right-sizing tool, not a universal replacement: persistent state, full desktops, latency-sensitive graphics, and always-on high utilization can still justify a VM or a native install.
Containerized application delivery on Kubernetes lets you run a Java or Linux application inside an ephemeral pod on Oracle Container Engine for Kubernetes (OKE) and stream it to any HTML5 browser through Thinfinity, with no fat client and no per-user virtual machine. Thinfinity brokers each session behind Universal ZTNA, OKE handles native pod orchestration and elasticity, and Thinfinity Cloud Manager automates the cloud environment, scaling schedules, and cost controls around it. The result is a modern, right-sized way to put Linux desktops and Java line-of-business apps in front of remote, BYOD, and cross-platform users.
This article extends our earlier work on browser-isolation pods on OKE for internal web apps to a broader class of workloads: full Linux GUI applications, engineering and scientific tools, developer environments, and Java server and desktop applications packaged as container images. We will keep the claims defensible, note where a full VM still makes sense, and be honest about latency and stateful-app trade-offs.
Key Takeaways
- What it is: Run a Java or Linux app in a container on OKE and deliver it to the browser as a safe HTML5 stream through Thinfinity, one isolated pod per session.
- Who provides what: OKE orchestrates pods and elasticity (virtual nodes, HPA, pay-per-pod); Thinfinity Workspace brokers the HTML5 session behind Universal ZTNA; Thinfinity Cloud Manager automates provisioning, scaling schedules, and cost optimization for the underlying cloud environment.
- Why it matters: Pay for concurrent sessions instead of standing per-user VMs, scale to zero off-hours, distribute nothing to endpoints, and give Linux and Java apps a browser front door.
- Security posture: Zero inbound ports, MFA/SSO/SAML, RBAC, session recording, ephemeral per-session isolation, and least-privilege pod access to OCI resources via Workload Identity.
- Be fair: Full desktops, persistent stateful workloads, and latency-sensitive graphics can still justify a dedicated VM or native install. Choose per workload.
The problem with per-VM and fat-client delivery of Java and Linux apps

For years, delivering a Linux tool or an internal Java application to a distributed workforce meant one of two things: ship a fat client to every endpoint, or stand up a per-user virtual machine or full VDI desktop. Both approaches carry structural cost and friction.
Fat clients demand packaging, patching, Java runtime version management, and OS compatibility testing across Windows, macOS, and Linux endpoints. Every update becomes a distribution project. Contractors and BYOD users are hard to support because you cannot control their machines.
Per-user VMs solve the endpoint problem but replace it with an infrastructure problem. You provision capacity for peak concurrency and pay for it around the clock, even when most desktops sit idle overnight or on weekends. A single-purpose Java app does not need an entire persistent desktop OS underneath it, yet that is what a VDI model bills you for.
The mismatch is one of granularity. A container sized to one application is a far smaller, more disposable unit than a full VM, and Kubernetes was built to schedule exactly that kind of unit at scale.
Step one: containerize the app for OKE
The first move is to package the application as a container image. For a Java application, that typically means a base image with the appropriate JRE or JDK plus the application artifact and its configuration. For a Linux GUI tool or a lightweight Linux desktop, the image bundles the app, a display server or session component, and any libraries it needs.
Once the image exists, OKE runs it as a pod. Oracle Container Engine for Kubernetes gives you several capabilities that matter for this delivery pattern:
- Virtual nodes provide a serverless Kubernetes experience with pod-level elasticity and pay-per-pod pricing, so you scale sessions without pre-planning worker-node capacity.
- Horizontal Pod Autoscaler (HPA) and the Cluster Autoscaler add and remove capacity in response to concurrency and resource pressure.
- Mixed node clusters (virtual, managed, and self-managed) let you place heavy Java heaps or GPU-accelerated engineering tools on managed or self-managed nodes while lighter sessions burst onto virtual nodes.
- Workload Identity grants each pod least-privilege access to OCI resources such as Vault secrets and Object Storage through OCI IAM, so a session only reaches what its application actually needs.
Virtual nodes allow you to improve operational efficiency and reduce total cost of ownerships.
Because the app is now an image under version control, you roll it out through CI/CD. A new release is a new image tag, promoted through your pipeline and deployed with a standard Kubernetes rollout. There is no client to redistribute.
How do you deliver a container to the browser with Thinfinity?

Packaging the app is half the story. Users still need to reach it, and they should reach it without a VPN, without installing anything, and without inbound firewall exposure.
Thinfinity Workspace delivers applications and desktops, both Windows and Linux, to any HTML5 browser. It sits behind Universal ZTNA: a reverse-proxy and DMZ broker model with zero inbound ports, MFA, SSO and SAML, role-based access control, and session recording. Linux desktop and Linux application delivery to the browser is a supported scenario.
In this pattern, Thinfinity brokers the connection between the browser and the containerized Java or Linux app running in its OKE pod, then renders the application as a safe, pixel-accurate HTML5 stream. The application binaries and data never leave the pod; the endpoint only ever receives rendered output and sends back keyboard, mouse, and clipboard events subject to policy.
Each session can map to its own pod and be ephemeral, so isolation is strong: one user’s session is a separate container from another’s, and the pod can be torn down at logoff. For Windows GUI apps, Thinfinity VirtualUI is an adjacent option that web-enables a Windows application directly; here the focus is Linux and Java containers.
Automate and scale with Thinfinity Cloud Manager
OKE handles pod orchestration natively. What it does not do by itself is provision and right-size the surrounding cloud environment, apply business-hours schedules, or give operators a single pane to control costs across clouds. That is where Thinfinity Cloud Manager fits.
Based on Cybele Software’s documentation, Thinfinity Cloud Manager is the automation, scaling, and cost-control plane for the Thinfinity delivery environment. It automates provisioning, deployment, scaling, and monitoring of cloud infrastructure using templates and Terraform-based Infrastructure as Code, and it supports multi-cloud operation across OCI, AWS, and Azure from one control panel. Its autoscaling engine turns capacity on and off based on demand, including schedule-based on/off policies, so you are not paying for idle infrastructure overnight or on weekends.
To keep this accurate: Cloud Manager automates the cloud environment and the node and capacity layer and integrates with the OCI and OKE layer. It is not, on its own, a Kubernetes controller or CRD operator. The native pod-level elasticity, HPA, and pay-per-pod behavior come from OKE; Cloud Manager provisions and scales the environment those pods run on and enforces cost and scheduling policy around it. Together, OKE’s per-pod elasticity and Cloud Manager’s environment-level automation let you pay for concurrent sessions and scale toward zero off-hours.
Reference architecture and request flow
The end-to-end path is short and, from the user’s point of view, invisible. A single URL in a browser reaches a fully isolated application session.

Read left to right, the user authenticates once at the ZTNA broker, the broker connects to a freshly scheduled pod, and the app streams back as HTML5. Cloud Manager and OKE operate continuously in the background: OKE schedules and scales pods, Cloud Manager provisions and right-sizes the environment and applies cost policy.
Which layer provides which capability?
A recurring question from architects is who owns what. The table below maps a delivery need to the component that satisfies it.
| Delivery need | Capability | Who provides it |
|---|---|---|
| Run the Java/Linux app as an isolated unit | Container image scheduled as a pod, one per session, ephemeral | OKE (Kubernetes) |
| Elastic scaling to concurrent demand | Virtual nodes (pay-per-pod), HPA, Cluster Autoscaler | OKE (Kubernetes) |
| Heavy heaps or GPU workloads | Mixed node pools (managed / self-managed alongside virtual) | OKE (Kubernetes) |
| Least-privilege pod access to secrets/storage | Workload Identity via OCI IAM (Vault, Object Storage) | OKE + OCI IAM |
| Reach the app from any browser, no install | HTML5 rendering of Linux/Java apps and desktops | Thinfinity Workspace |
| Secure access without inbound ports | Universal ZTNA: reverse-proxy/DMZ, MFA/SSO/SAML, RBAC, session recording | Thinfinity Workspace |
| Provision the cloud environment as code | Templated, Terraform-based IaC automation | Thinfinity Cloud Manager |
| Right-size capacity and control cost | Autoscaling engine, schedule-based on/off, multi-cloud monitoring | Thinfinity Cloud Manager |
Use cases

The pattern fits any workload where a Linux or Java application needs a wide, controlled audience without endpoint installs.
- Internal Java line-of-business apps: Give finance, operations, or claims teams a browser link to a Java app instead of managing JRE versions on every desktop.
- Engineering and scientific Linux tools: Deliver simulation, EDA, or data-analysis tools, placing GPU or high-memory sessions on managed node pools.
- Developer environments: Provide consistent, disposable Linux dev containers reachable from any machine, including locked-down or BYOD laptops.
- ISV application delivery: Software vendors can ship their Linux or Java product as a SaaS-like browser experience without asking customers to install anything.
- Cross-platform access: Reach the same app identically from Windows, Mac, Chromebooks, and tablets.
- Bursty and seasonal workloads: Scale sessions up for a quarter-end run or a training cohort, then scale back toward zero, paying for concurrency rather than peak-sized standing capacity.
Honest trade-offs: when a VM or native install still wins
Containerized delivery is not a universal replacement. It is a right-sizing tool, and there are cases where a full VM, a persistent VDI desktop, or a native install remains the better call.
- Latency and interactive UX: HTML5 streaming adds a network round trip. For most business and engineering apps this is imperceptible, but highly interactive 3D, real-time video editing, or sub-frame-sensitive work may favor local execution or a purpose-built high-performance session.
- Stateful applications: Ephemeral pods are ideal for stateless or externally-persisted apps. If an app expects durable local state, you must plan persistent volumes, external databases, or Object Storage, which adds design work; a persistent VM can be simpler.
- Full desktop needs: If users genuinely need a complete, long-lived Linux or Windows desktop with many installed tools and personalization, a desktop model may fit better than single-app pods.
- Heavy, always-on workloads: When utilization is consistently high around the clock, the pay-per-pod advantage shrinks and reserved capacity may be more economical.
The practical approach is to segment your application portfolio: containerize the single-purpose, bursty, and broadly-accessed apps, and keep VMs or native installs where state, latency, or full-desktop requirements justify them.
Getting started
A pragmatic rollout looks like this. First, pick one or two well-understood Java or Linux applications with clear session boundaries. Second, containerize each one and validate it as a pod on OKE, wiring Workload Identity for any secrets or storage it needs. Third, publish the app through Thinfinity Workspace behind Universal ZTNA and test the HTML5 experience across the browsers and devices your users actually use. Fourth, bring in Thinfinity Cloud Manager to codify provisioning and apply autoscaling and business-hours schedules so the environment right-sizes itself. Finally, measure concurrency and cost against your old per-VM baseline, then expand the pattern to the next set of apps.
Frequently Asked Questions
What is containerized application delivery on Kubernetes?
It is the practice of packaging an application as a container image, running it as a pod on Kubernetes, and delivering its interface to end users, in this pattern as an HTML5 browser stream through Thinfinity, rather than installing the app on each endpoint or hosting it on a per-user VM.
Can I deliver Linux desktops and apps to a browser?
Yes. Thinfinity Workspace supports delivering both Linux and Windows applications and desktops to any HTML5 browser, brokered behind Universal ZTNA with MFA, SSO/SAML, RBAC, and session recording.
Does Thinfinity Cloud Manager replace Kubernetes autoscaling?
No. OKE provides native pod-level elasticity through virtual nodes, HPA, and the Cluster Autoscaler. Cloud Manager automates provisioning of the cloud environment, applies schedule-based on/off and autoscaling of the capacity layer, and optimizes cost across clouds. The two complement each other.
How does each pod get secure access to secrets and storage?
Through OKE Workload Identity integrated with OCI IAM, each pod receives least-privilege, scoped access to OCI resources such as Vault secrets and Object Storage, so a session only reaches what its application requires.
Do end users need to install anything?
No. Users need only a modern HTML5 browser. Nothing is installed on the endpoint, which is what makes the model practical for BYOD, contractor, and cross-platform access.
Is this cheaper than per-user VMs?
Often, yes, for bursty or broadly-accessed single-purpose apps, because OKE pay-per-pod plus Cloud Manager scheduling let you pay for concurrent sessions and scale toward zero off-hours. For consistently high, always-on utilization, reserved VM capacity can still be more economical, so compare against your own concurrency profile.
Q&A
We already run internal web apps as browser-isolation pods on OKE. How is this different?
A: It is the same architectural idea extended to a broader class of workloads. Instead of only proxying an internal web app, you run full Linux GUI tools or Java desktop and server applications inside the pod and stream them to the browser as HTML5. The ZTNA broker, per-session isolation, and OKE elasticity carry over directly.
Where do heavy Java heaps or GPU tools run if virtual nodes are serverless?
A: Use a mixed OKE cluster. Place memory-heavy Java sessions or GPU-accelerated engineering tools on managed or self-managed node pools, and let lighter, bursty sessions run on virtual nodes with pay-per-pod pricing. You choose placement per workload.
How do we handle application state if pods are ephemeral?
A: Externalize it. Persist data to a database, to OCI Object Storage, or to persistent volumes, and keep the pod stateless. If an application truly cannot externalize its state, that is a signal it may be a better fit for a persistent VM.
What does the security team need to hear?
A: Zero inbound ports thanks to the reverse-proxy/DMZ ZTNA model, MFA and SSO/SAML at the door, RBAC per application, session recording for audit, ephemeral per-session isolation, least-privilege pod access via Workload Identity, and nothing installed or persisted on the endpoint.
Can an ISV use this to deliver its product as SaaS?
A: Yes. An ISV can containerize its Linux or Java product, run it on OKE, and deliver it to customers as a browser experience through Thinfinity, avoiding client installs while retaining per-tenant isolation and central control.
How disruptive is this to our developers?
A: Minimal. The application does not need to be rewritten; it is packaged as a container image and rolled out through your existing CI/CD. Delivery, access, and scaling are handled by OKE, Thinfinity, and Cloud Manager rather than by changes to application code.
Ready to modernize your app delivery?
Package your Linux and Java applications once as containers, deliver them to any HTML5 browser through Thinfinity’s Universal ZTNA, and let Thinfinity Cloud Manager keep your OKE environment right-sized and cost-efficient. Talk to our architects about mapping your application portfolio to this model and running a proof of concept on OCI.