{"id":17,"date":"2023-08-14T15:10:06","date_gmt":"2023-08-14T14:10:06","guid":{"rendered":"http:\/\/cheerpj.com\/?page_id=17"},"modified":"2026-04-13T13:33:12","modified_gmt":"2026-04-13T12:33:12","slug":"cheerpj","status":"publish","type":"page","link":"https:\/\/cheerpj.com\/","title":{"rendered":"CheerpJ"},"content":{"rendered":"<section class=\"l-section wpb_row us_custom_df5f4c97 hero-modern has_text_color height_custom full_height valign_top\" id=\"hero\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-6 wpb_column vc_column_container\"><div class=\"vc_column-inner us_custom_ac5b3e88\"><div class=\"wpb_wrapper\"><div class=\"wpb_text_column us_custom_194b5bd2 has_text_color\"><div class=\"wpb_wrapper\"><h1>Run <span style=\"color: #ff7c00\">Java applications<\/span><br \/>\nin the browser<\/h1>\n<\/div><\/div><div class=\"wpb_text_column us_custom_2ba8367b has_text_color hide_on_tablets hide_on_mobiles\"><div class=\"wpb_wrapper\"><p>No plugins. No desktop installs. No application rewrite required.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-6 wpb_column vc_column_container\"><div class=\"vc_column-inner us_custom_372767fb\"><div class=\"wpb_wrapper\"><div class=\"w-html hide_on_mobiles\"><!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<style>\n* { box-sizing: border-box; margin: 0; padding: 0; }\n@keyframes mount {\n  from { opacity: 0; transform: translateY(8px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n\n\/* \u2500\u2500 Browser shell \u2500\u2500 *\/\n.browser {\n  width: 820px;\n  border-radius: 10px;\n  overflow: hidden;\n  box-shadow: 0 0 0 1px #333, 0 8px 24px rgba(0,0,0,0.45);\n}\n\/* \u2500\u2500 Edge tab strip \u2500\u2500 *\/\n.tabstrip {\n  background: #1e1e1e;\n  height: 36px; padding: 0 0 0 8px;\n  display: flex; align-items: center;\n}\n.tabs-area { flex: 1; display: flex; align-items: flex-end; gap: 1px; align-self: flex-end; }\n.tab-active {\n  background: #2c2c2c;\n  border-radius: 6px 6px 0 0;\n  height: 30px; padding: 0 8px 0 10px;\n  display: flex; align-items: center; gap: 8px;\n  border: 1px solid #3a3a3a; border-bottom: 1px solid #2c2c2c;\n  position: relative; top: 1px;\n  min-width: 140px;\n}\n.tab-txt { flex: 1; height: 4px; background: #777; border-radius: 2px; }\n.tab-x   { width: 14px; height: 14px; border-radius: 50%; background: #444; flex-shrink: 0; }\n\/* Windows min\/max\/close *\/\n.win-controls { display: flex; height: 100%; align-items: center; }\n.wc-btn {\n  width: 46px; height: 100%; display: flex; align-items: center; justify-content: center;\n  color: #bbb; font-size: 13px; font-family: sans-serif; cursor: default;\n}\n.wc-btn.close:hover { background: #c42b1c; }\n.wc-icon { position: relative; display: block; }\n.wc-icon.min { width: 10px; height: 2px; background: #bbb; }\n.wc-icon.max { width: 10px; height: 10px; border: 1px solid #bbb; }\n.wc-icon.close { width: 11px; height: 11px; }\n.wc-icon.close::before,\n.wc-icon.close::after {\n  content: \"\";\n  position: absolute;\n  left: 5px;\n  top: 0;\n  width: 1px;\n  height: 11px;\n  background: #bbb;\n}\n.wc-icon.close::before { transform: rotate(45deg); }\n.wc-icon.close::after { transform: rotate(-45deg); }\n\n\/* \u2500\u2500 Edge nav bar \u2500\u2500 *\/\n.chrome {\n  background: #2c2c2c;\n  padding: 5px 10px;\n  display: flex; align-items: center; gap: 6px;\n  border-bottom: 1px solid #1a1a1a;\n}\n.nav  { display: flex; gap: 2px; }\n.nav-b {\n  width: 28px; height: 28px; border-radius: 50%;\n  display: flex; align-items: center; justify-content: center;\n  color: #ccc; font-size: 18px; font-family: sans-serif; line-height: 1;\n}\n.urlbar {\n  flex: 1; height: 26px;\n  background: #3c3c3c; border: 1px solid #4e4e4e; border-radius: 20px;\n  display: flex; align-items: center; padding: 0 10px; gap: 6px;\n}\n.url-dot { width: 6px; height: 6px; border-radius: 50%; background: #28c840; flex-shrink: 0; }\n.url-bar { flex: 1; height: 3px; background: #5a5a5a; border-radius: 2px; }\n.cr { display: flex; gap: 3px; }\n.cr-b { width: 22px; height: 22px; border-radius: 4px; background: #3c3c3c; border: 1px solid #4e4e4e; }\n\n\/* \u2500\u2500 Oracle Forms \u2500\u2500 *\/\n.oracle {\n  background: #d4d0c8;\n  overflow: hidden;\n  user-select: none;\n}\n\n\/* \u2500\u2500 Toolbar \u2500\u2500 *\/\n.toolbar {\n  background: #d4d0c8;\n  border-bottom: 1px solid #888;\n  padding: 3px 5px;\n  display: flex; align-items: center; gap: 3px;\n}\n.win-btn {\n  width: 52px; height: 22px;\n  background: #d4d0c8;\n  border-top:    1px solid #ffffff;\n  border-left:   1px solid #ffffff;\n  border-right:  1px solid #444;\n  border-bottom: 1px solid #444;\n  cursor: pointer;\n  display: flex; align-items: center; justify-content: center;\n  flex-shrink: 0;\n}\n.win-btn:active,\n.findbtn:active,\n.fees-btn:active,\n.scroll-arrow-btn:active {\n  border-top:    1px solid #444;  border-left:  1px solid #444;\n  border-right:  1px solid #fff;  border-bottom: 1px solid #fff;\n}\n.btn-slug { height: 4px; width: 30px; border-radius: 2px; background: #333; }\n\n\/* \u2500\u2500 Form grid \u2500\u2500\n   8 fixed columns:\n   c1=90  c2=115  c3=12  c4=82  c5=148  c6=1fr  c7=90  c8=90\n   lbl    fld     gap    lbl    fld     grow    lbl    fld\n*\/\n.fbody {\n  display: grid;\n  grid-template-columns: 90px 115px 12px 82px 148px 1fr 90px 90px;\n  row-gap: 3px;\n  align-items: center;\n  padding: 5px 6px 6px;\n}\n\n\/* Label cell: grid item, vertically centred by parent align-items *\/\n.lbl { height: 4px; border-radius: 2px; background: #333; flex-shrink: 0; }\n\n\/* Windows sunken field \u2014 fills its grid column *\/\n.fi {\n  background: #ffffff;\n  border-top:    1px solid #666;\n  border-left:   1px solid #666;\n  border-right:  1px solid #e0e0e0;\n  border-bottom: 1px solid #e0e0e0;\n  height: 20px;\n  display: flex; align-items: center;\n  padding: 0 4px;\n}\n\/* Fixed-width slug inside field \u2014 independent of field width *\/\n.fv { height: 5px; width: 68px; border-radius: 2px; background: #ccc; flex-shrink: 0; }\n\n\/* Dropdown \u2014 fills its grid column *\/\n.dd {\n  background: #ffffff;\n  border-top:    1px solid #666;\n  border-left:   1px solid #666;\n  border-right:  1px solid #e0e0e0;\n  border-bottom: 1px solid #e0e0e0;\n  height: 20px;\n  display: flex; align-items: center;\n}\n.dd-val { flex: 1; margin: 0 4px; height: 5px; background: #ccc; border-radius: 2px; }\n.dd-btn {\n  width: 17px; height: 100%;\n  background: #d4d0c8;\n  border-top:    1px solid #fff;\n  border-left:   1px solid #fff;\n  border-right:  1px solid #444;\n  border-bottom: 1px solid #444;\n  display: flex; align-items: center; justify-content: center;\n  flex-shrink: 0;\n}\n.caret { width: 0; height: 0; border-left: 3px solid transparent; border-right: 3px solid transparent; border-top: 4px solid #333; }\n\n\/* Small Find button (inside form rows) *\/\n.findbtn {\n  height: 20px; padding: 0 5px;\n  background: #d4d0c8;\n  border-top:    1px solid #fff;   border-left:   1px solid #fff;\n  border-right:  1px solid #444;   border-bottom: 1px solid #444;\n  cursor: pointer; flex-shrink: 0;\n  display: flex; align-items: center;\n}\n.findbtn-txt { width: 18px; height: 4px; background: #333; border-radius: 2px; }\n\n\/* Customer code cell: fi + find btn in one grid cell *\/\n.cc-cell { display: flex; align-items: center; gap: 3px; }\n.cc-cell .fi { flex: 1; }\n\n\/* Spans all 8 columns \u2014 for table, amount row, panels *\/\n.full { grid-column: 1 \/ -1; }\n\n\/* \u2500\u2500 Data table \u2500\u2500 *\/\n.tbl-outer {\n  background: #fff;\n  border-top:    1px solid #666;\n  border-left:   1px solid #666;\n  border-right:  1px solid #e0e0e0;\n  border-bottom: 1px solid #e0e0e0;\n  display: flex;\n  overflow: hidden;\n}\n.tbl-inner { flex: 1; min-width: 0; }\n.tbl-cols { display: grid; grid-template-columns: 72px minmax(0,1fr) 72px 80px 82px 74px 72px; }\n\n.th-row { background: #d4d0c8; border-bottom: 1px solid #888; }\n.th-cell {\n  height: 20px; padding: 0 4px;\n  display: flex; align-items: center;\n  border-right: 1px solid #888;\n}\n.th-cell:last-child { border-right: none; }\n.th-slug { height: 4px; border-radius: 2px; background: #555; }\n\n.td-row { border-bottom: 1px solid #e8e8e8; cursor: pointer; transition: background 0.15s; }\n.td-row.sel { background: #FF7C00; }\n.td-row:hover:not(.sel) { background: #f0eeec; }\n.td-cell {\n  height: 24px; padding: 0 4px;\n  display: flex; align-items: center;\n  border-right: 1px solid #eee;\n}\n.td-cell:last-child { border-right: none; }\n.td-slug { height: 5px; border-radius: 2px; background: #bbb; }\n.td-row.sel .td-slug { background: rgba(255,255,255,0.55); }\n\n\/* Fees cell: slug fills remaining space, button is always flush right *\/\n.fees-wrap { display: flex; align-items: center; gap: 3px; width: 100%; height: 100%; }\n.fees-wrap .td-slug { flex: 1; width: auto; }\n.fees-btn {\n  height: 16px; padding: 0 4px;\n  background: #d4d0c8;\n  border-top:    1px solid #fff;   border-left:   1px solid #fff;\n  border-right:  1px solid #444;   border-bottom: 1px solid #444;\n  cursor: pointer; flex-shrink: 0;\n  display: flex; align-items: center; justify-content: center;\n  align-self: center;\n}\n.fees-btn-txt { width: 14px; height: 3px; background: #333; border-radius: 1px; }\n\n\/* Windows scrollbar *\/\n.vscroll {\n  width: 16px;\n  background: repeating-linear-gradient(45deg, #c8c4bc, #c8c4bc 1px, #d4d0c8 1px, #d4d0c8 4px);\n  border-left: 1px solid #888;\n  display: flex; flex-direction: column;\n}\n.scroll-arrow-btn {\n  width: 100%; height: 16px; flex-shrink: 0;\n  background: #d4d0c8;\n  border-top:    1px solid #fff;   border-left:   1px solid #fff;\n  border-right:  1px solid #444;   border-bottom: 1px solid #444;\n  display: flex; align-items: center; justify-content: center;\n}\n.arr-up   { width:0; height:0; border-left:4px solid transparent; border-right:4px solid transparent; border-bottom:4px solid #333; }\n.arr-down { width:0; height:0; border-left:4px solid transparent; border-right:4px solid transparent; border-top:4px solid #333; }\n.scroll-thumb-wrap { flex: 1; position: relative; }\n.scroll-thumb {\n  position: absolute; top: 2px; left: 1px; right: 1px; height: 28px;\n  background: #d4d0c8;\n  border-top:    1px solid #fff;   border-left:   1px solid #fff;\n  border-right:  1px solid #444;   border-bottom: 1px solid #444;\n}\n\n\/* \u2500\u2500 Amount row \u2014 mirrors two-col grid so columns align with groupboxes below \u2500\u2500 *\/\n.amt-row {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 5px;\n  margin-top: 2px;\n  align-items: center;\n}\n.bill-box {\n  background: #000; border: 1px solid #000;\n  height: 22px; min-width: 105px;\n  display: flex; align-items: center; padding: 0 6px; justify-content: flex-end;\n}\n.bill-green { width: 72px; height: 6px; background: #00cc00; border-radius: 2px; }\n\n\/* \u2500\u2500 Group boxes (no title slug) \u2500\u2500 *\/\n.groupbox {\n  border: 1px solid #888;\n  padding: 6px;\n  margin-top: 4px;\n}\n.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; }\n\n\/* Inner grid for left panel: label field label field *\/\n.gb-left  { display: grid; grid-template-columns: 66px 1fr 72px 1fr; gap: 3px 4px; align-items: center; }\n\/* Inner grid for right panel: label field [btn] *\/\n.gb-right { display: grid; grid-template-columns: 72px 1fr auto; gap: 3px 4px; align-items: center; }\n\/* Legacy flex row (unused now but kept in case) *\/\n.prow {\n  display: flex; align-items: center; gap: 5px;\n  margin-bottom: 4px;\n}\n.prow:last-child { margin-bottom: 0; }\n.plbl { height: 4px; border-radius: 2px; background: #333; flex-shrink: 0; }\n.pfi {\n  background: #fff;\n  border-top: 1px solid #666; border-left: 1px solid #666;\n  border-right: 1px solid #e0e0e0; border-bottom: 1px solid #e0e0e0;\n  height: 20px; flex: 1;\n  display: flex; align-items: center; padding: 0 4px;\n}\n.pfi .fv { width: 55px; }\n.pdd {\n  background: #fff;\n  border-top: 1px solid #666; border-left: 1px solid #666;\n  border-right: 1px solid #e0e0e0; border-bottom: 1px solid #e0e0e0;\n  height: 20px; flex: 1;\n  display: flex; align-items: center;\n}\n.pdd .dd-val { flex: 1; margin: 0 4px; height: 5px; background: #ccc; border-radius: 2px; }\n<\/style>\n<\/head>\n<body>\n<div id=\"root\"><\/div>\n<script src=\"https:\/\/unpkg.com\/react@18\/umd\/react.production.min.js\"><\/script>\n<script src=\"https:\/\/unpkg.com\/react-dom@18\/umd\/react-dom.production.min.js\"><\/script>\n<script src=\"https:\/\/unpkg.com\/@babel\/standalone\/babel.min.js\"><\/script>\n<script type=\"text\/babel\">\nconst { useState, useEffect, useRef } = React;\n\n\/* \u2500\u2500 Atoms \u2500\u2500 *\/\nconst Lbl  = ({ w = 60 }) => <div className=\"lbl\" style={{ width: w }}\/>;\nconst Gap  = () => <div\/>;  \/* empty column spacer *\/\n\nconst Fi = ({ gc, accent }) => (\n  <div className=\"fi\" style={gc ? { gridColumn: gc } : {}}>\n    <div className=\"fv\" style={accent ? { background: '#d09090' } : {}}\/>\n  <\/div>\n);\nconst Dd = ({ gc }) => (\n  <div className=\"dd\" style={gc ? { gridColumn: gc } : {}}>\n    <div className=\"dd-val\"\/>\n    <div className=\"dd-btn\"><div className=\"caret\"\/><\/div>\n  <\/div>\n);\nconst FindBtn = () => (\n  <button className=\"findbtn\"><div className=\"findbtn-txt\"\/><\/button>\n);\nconst WinBtn = () => (\n  <button className=\"win-btn\"><div className=\"btn-slug\"\/><\/button>\n);\n\nconst TABLE_ROWS = [\n  [54, 68, 48, 60, null, 52, 62],\n  [44, 80, 36, 52, null, 47, 54],\n  [62, 58, 54, 44, null, 36, 68],\n  [50, 72, 44, 65, null, 60, 46],\n  [58, 55, 62, 54, null, 65, 55],\n];\n\nfunction App() {\n  const [sel, setSel]     = useState(0);\n  const [ready, setReady] = useState(false);\n  const [scale, setScale]     = useState(1);\n  const [naturalH, setNaturalH] = useState(0);\n  const wrapRef    = useRef(null);\n  const browserRef = useRef(null);\n\n  useEffect(() => {\n    setReady(true);\n    const t = setInterval(() => setSel(r => (r + 1) % TABLE_ROWS.length), 2700);\n\n    const updateScale = () => {\n      if (!wrapRef.current || !browserRef.current) return;\n      const avail = wrapRef.current.offsetWidth;\n      const s = Math.min(1, avail \/ 820);\n      setScale(s);\n      setNaturalH(browserRef.current.offsetHeight);\n    };\n    const timer = setTimeout(updateScale, 80);\n    window.addEventListener('resize', updateScale);\n\n    return () => {\n      clearInterval(t);\n      clearTimeout(timer);\n      window.removeEventListener('resize', updateScale);\n    };\n  }, []);\n\n  const mb = naturalH > 0 && scale < 1 ? (scale - 1) * naturalH : 0;\n\n  return (\n    <div ref={wrapRef} style={{ width: '100%', padding: '24px 0 36px', overflow: 'hidden' }}>\n    <div ref={browserRef} className=\"browser\" style={{ opacity: ready ? 1 : 0, transition: 'opacity 0.45s', transform: `scale(${scale})`, transformOrigin: 'top left', marginBottom: mb }}>\n\n      {\/* Tab strip + Windows controls *\/}\n      <div className=\"tabstrip\">\n        <div className=\"tabs-area\">\n          <div className=\"tab-active\">\n            <div className=\"tab-txt\"\/>\n            <div className=\"tab-x\"\/>\n          <\/div>\n        <\/div>\n        <div className=\"win-controls\">\n          <div className=\"wc-btn\"><span className=\"wc-icon min\"\/><\/div>\n          <div className=\"wc-btn\"><span className=\"wc-icon max\"\/><\/div>\n          <div className=\"wc-btn close\"><span className=\"wc-icon close\"\/><\/div>\n        <\/div>\n      <\/div>\n\n      {\/* Edge nav bar *\/}\n      <div className=\"chrome\">\n        <div className=\"nav\">\n          <div className=\"nav-b\">\u2039<\/div>\n          <div className=\"nav-b\">\u203a<\/div>\n          <div className=\"nav-b\">\u21bb<\/div>\n        <\/div>\n        <div className=\"urlbar\">\n          <div className=\"url-dot\"\/>\n          <div style={{ width:1, height:12, background:'#4e4e4e' }}\/>\n          <div className=\"url-bar\"\/>\n        <\/div>\n        <div className=\"cr\">\n          <div className=\"cr-b\"\/><div className=\"cr-b\"\/><div className=\"cr-b\"\/>\n        <\/div>\n      <\/div>\n\n      {\/* Oracle Forms *\/}\n      <div className=\"oracle\">\n\n        {\/* Toolbar \u2014 8 uniform buttons *\/}\n        <div className=\"toolbar\">\n          {Array(8).fill(0).map((_, i) => <WinBtn key={i}\/>)}\n        <\/div>\n\n        {\/* \u2500\u2500 Form grid \u2500\u2500\n            Columns: c1=90 c2=115 c3=12 c4=82 c5=148 c6=1fr c7=90 c8=90\n        *\/}\n        <div className=\"fbody\">\n\n          {\/* Row 1: Receipt No | Receipt Date | Manual Receipt No *\/}\n          <Lbl w={55}\/>  <Fi\/>           <Gap\/>  <Lbl w={60}\/> <Fi\/>  <Gap\/>  <Lbl w={74}\/> <Fi\/>\n\n          {\/* Row 2: Document Number (spans c2\u2013c5) | Default Currency *\/}\n          <Lbl w={76}\/>\n          <Fi gc=\"2 \/ 6\"\/>\n          {\/* c6 grow *\/ }<Gap\/>\n          <Lbl w={76}\/>\n          <Fi accent\/>\n\n          {\/* Row 3: Other Customer | Receipt Type | Service Group *\/}\n          <Lbl w={73}\/>  <Dd\/>           <Gap\/>  <Lbl w={60}\/> <Dd\/>  <Gap\/>  <Lbl w={64}\/> <Dd\/>\n\n          {\/* Row 4: Payment Mode | Reason (spans c5\u2013c8) *\/}\n          <Lbl w={66}\/>  <Dd\/>           <Gap\/>  <Lbl w={40}\/>\n          <Fi gc=\"5 \/ -1\"\/>\n\n          {\/* Row 5: Customer Code + Find | Customer Name (spans c5\u2013c8) *\/}\n          <Lbl w={66}\/>\n          <div className=\"cc-cell\">\n            <div className=\"fi\" style={{ flex: 1 }}><div className=\"fv\" style={{ width: 52 }}\/><\/div>\n            <FindBtn\/>\n          <\/div>\n          <Gap\/>\n          <Lbl w={66}\/>\n          <Fi gc=\"5 \/ -1\"\/>\n\n          {\/* \u2500\u2500 Data table (full width) \u2500\u2500 *\/}\n          <div className=\"tbl-outer full\">\n            <div className=\"tbl-inner\">\n              <div className=\"th-row tbl-cols\">\n                {[42, 50, 50, 56, 42, 50, 52].map((w, i) => (\n                  <div key={i} className=\"th-cell\">\n                    <div className=\"th-slug\" style={{ width: `${w}%` }}\/>\n                  <\/div>\n                ))}\n              <\/div>\n              {TABLE_ROWS.map((row, ri) => (\n                <div\n                  key={ri}\n                  className={`td-row tbl-cols${sel === ri ? ' sel' : ''}`}\n                  onClick={() => setSel(ri)}\n                >\n                  {row.map((w, ci) => (\n                    <div key={ci} className=\"td-cell\">\n                      {ci === 4 ? (\n                        <div className=\"fees-wrap\">\n                          <div className=\"td-slug\"\/>\n                          <button className=\"fees-btn\"><div className=\"fees-btn-txt\"\/><\/button>\n                        <\/div>\n                      ) : (\n                        <div className=\"td-slug\" style={{ width: `${w}%` }}\/>\n                      )}\n                    <\/div>\n                  ))}\n                <\/div>\n              ))}\n            <\/div>\n            <div className=\"vscroll\">\n              <div className=\"scroll-arrow-btn\"><div className=\"arr-up\"\/><\/div>\n              <div className=\"scroll-thumb-wrap\"><div className=\"scroll-thumb\"\/><\/div>\n              <div className=\"scroll-arrow-btn\"><div className=\"arr-down\"\/><\/div>\n            <\/div>\n          <\/div>\n\n          {\/* Amount In Words + Bill Amount \u2014 two cells align with groupboxes below *\/}\n          <div className=\"amt-row full\">\n            <div style={{ display: 'flex', alignItems: 'center', gap: 4, paddingLeft: 7 }}>\n              <div className=\"lbl\" style={{ width: 66, flexShrink: 0 }}\/>\n              <div className=\"fi\" style={{ flex: 1 }}><div className=\"fv\" style={{ width: 90 }}\/><\/div>\n            <\/div>\n            <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n              <div className=\"lbl\" style={{ width: 82, flexShrink: 0 }}\/>\n              <div className=\"bill-box\" style={{ flex: 1 }}><div className=\"bill-green\"\/><\/div>\n            <\/div>\n          <\/div>\n\n          {\/* \u2500\u2500 Cheque\/Card + Bank panels \u2500\u2500 *\/}\n          <div className=\"two-col full\">\n\n            {\/* Cheque \/ Credit Card Details \u2014 4-col grid *\/}\n            <div className=\"groupbox\">\n              <div className=\"gb-left\">\n                <div className=\"plbl\" style={{ width: 62 }}\/><div className=\"pfi\"><div className=\"fv\"\/><\/div>\n                <div className=\"plbl\" style={{ width: 42 }}\/><div className=\"pfi\"><div className=\"fv\"\/><\/div>\n                <div className=\"plbl\" style={{ width: 62 }}\/><div className=\"pfi\"><div className=\"fv\"\/><\/div>\n                <div className=\"plbl\" style={{ width: 66 }}\/><div className=\"pdd\"><div className=\"dd-val\"\/><div className=\"dd-btn\"><div className=\"caret\"\/><\/div><\/div>\n              <\/div>\n            <\/div>\n\n            {\/* Bank Details \u2014 3-col grid *\/}\n            <div className=\"groupbox\">\n              <div className=\"gb-right\">\n                <div className=\"plbl\" style={{ width: 62 }}\/><div className=\"pfi\"><div className=\"fv\"\/><\/div><FindBtn\/>\n                <div className=\"plbl\" style={{ width: 62 }}\/><div className=\"pfi\" style={{ gridColumn: '2 \/ -1' }}><div className=\"fv\"\/><\/div>\n              <\/div>\n            <\/div>\n\n          <\/div>\n\n        <\/div>\n      <\/div>\n    <\/div>\n    <\/div>\n  );\n}\n\nReactDOM.render(<App\/>, document.getElementById('root'));\n<\/script>\n<\/body>\n<\/html>\n<\/div><div class=\"w-html hide_on_default hide_on_laptops hide_on_tablets\"><!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, viewport-fit=cover\">\n<style>\n#oracle-forms-mobile {\n  --bg: #0f1114;\n  --chrome-1: #1e1e1e;\n  --chrome-2: #2c2c2c;\n  --chrome-3: #3c3c3c;\n  --shell-border: #333;\n  --oracle: #d4d0c8;\n  --accent: #ff7c00;\n  --touch: 42px;\n  --radius: 12px;\n  --device-max: 430px;\n}\n\n#oracle-forms-mobile,\n#oracle-forms-mobile * {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n\n#oracle-forms-mobile {\n  min-height: 100%;\n  background: var(--bg);\n  padding: max(10px, env(safe-area-inset-top)) 10px max(14px, env(safe-area-inset-bottom));\n  font-family: \"Segoe UI\", \"Tahoma\", sans-serif;\n}\n\n#oracle-forms-mobile .mobile-frame {\n  width: min(100%, var(--device-max));\n  margin: 0 auto;\n}\n\n#oracle-forms-mobile .browser {\n  width: 100%;\n  border-radius: var(--radius);\n  overflow: hidden;\n  border: 1px solid var(--shell-border);\n  box-shadow: 0 14px 38px rgba(0, 0, 0, 0.45);\n  background: var(--chrome-1);\n}\n\n#oracle-forms-mobile .slug {\n  display: block;\n  height: 4px;\n  background: #5a5a5a;\n  border-radius: 2px;\n}\n\n#oracle-forms-mobile .s2 { height: 2px; }\n#oracle-forms-mobile .s3 { height: 3px; }\n#oracle-forms-mobile .s5 { height: 5px; }\n#oracle-forms-mobile .s6 { height: 6px; }\n#oracle-forms-mobile .s8 { height: 8px; }\n\n#oracle-forms-mobile .w20 { width: 20%; }\n#oracle-forms-mobile .w30 { width: 30%; }\n#oracle-forms-mobile .w35 { width: 35%; }\n#oracle-forms-mobile .w40 { width: 40%; }\n#oracle-forms-mobile .w45 { width: 45%; }\n#oracle-forms-mobile .w50 { width: 50%; }\n#oracle-forms-mobile .w55 { width: 55%; }\n#oracle-forms-mobile .w60 { width: 60%; }\n#oracle-forms-mobile .w65 { width: 65%; }\n#oracle-forms-mobile .w70 { width: 70%; }\n#oracle-forms-mobile .w75 { width: 75%; }\n#oracle-forms-mobile .w80 { width: 80%; }\n#oracle-forms-mobile .w90 { width: 90%; }\n\n#oracle-forms-mobile .tabstrip {\n  min-height: 40px;\n  background: var(--chrome-1);\n  border-bottom: 1px solid #191919;\n  display: flex;\n  align-items: stretch;\n}\n\n#oracle-forms-mobile .tabs-area {\n  flex: 1;\n  display: flex;\n  align-items: flex-end;\n  padding-left: 8px;\n}\n\n#oracle-forms-mobile .tab-active {\n  min-height: 32px;\n  max-width: 100%;\n  background: var(--chrome-2);\n  border: 1px solid #3a3a3a;\n  border-bottom-color: var(--chrome-2);\n  border-radius: 8px 8px 0 0;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 0 10px;\n}\n\n#oracle-forms-mobile .tab-dot {\n  width: 12px;\n  height: 12px;\n  border-radius: 3px;\n  background: var(--accent);\n  flex-shrink: 0;\n}\n\n#oracle-forms-mobile .win-controls {\n  display: flex;\n  min-height: 40px;\n}\n\n#oracle-forms-mobile .wc-btn {\n  width: 42px;\n  min-height: 40px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#oracle-forms-mobile .wc-icon {\n  position: relative;\n  display: block;\n}\n\n#oracle-forms-mobile .wc-icon.min {\n  width: 10px;\n  height: 2px;\n  background: #bbb;\n}\n\n#oracle-forms-mobile .wc-icon.max {\n  width: 10px;\n  height: 10px;\n  border: 1px solid #bbb;\n}\n\n#oracle-forms-mobile .wc-icon.close {\n  width: 11px;\n  height: 11px;\n}\n\n#oracle-forms-mobile .wc-icon.close::before,\n#oracle-forms-mobile .wc-icon.close::after {\n  content: \"\";\n  position: absolute;\n  top: 0;\n  left: 5px;\n  width: 1px;\n  height: 11px;\n  background: #bbb;\n}\n\n#oracle-forms-mobile .wc-icon.close::before { transform: rotate(45deg); }\n#oracle-forms-mobile .wc-icon.close::after { transform: rotate(-45deg); }\n\n#oracle-forms-mobile .chrome {\n  min-height: 42px;\n  background: var(--chrome-2);\n  border-bottom: 1px solid #1a1a1a;\n  display: flex;\n  align-items: center;\n  gap: 6px;\n  padding: 6px 8px;\n}\n\n#oracle-forms-mobile .nav {\n  display: flex;\n  gap: 2px;\n}\n\n#oracle-forms-mobile .nav-b {\n  width: 30px;\n  height: 30px;\n  border-radius: 50%;\n  background: transparent;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#oracle-forms-mobile .nav-icon {\n  width: 10px;\n  height: 10px;\n  border-top: 2px solid #cfcfcf;\n  border-left: 2px solid #cfcfcf;\n}\n\n#oracle-forms-mobile .nav-icon.left { transform: rotate(-45deg); margin-left: 4px; }\n#oracle-forms-mobile .nav-icon.right { transform: rotate(135deg); margin-right: 4px; }\n\n#oracle-forms-mobile .nav-icon.refresh {\n  width: 12px;\n  height: 12px;\n  border: 2px solid #cfcfcf;\n  border-right-color: transparent;\n  border-radius: 50%;\n  transform: rotate(35deg);\n}\n\n#oracle-forms-mobile .urlbar {\n  flex: 1;\n  min-height: 30px;\n  border-radius: 20px;\n  border: 1px solid #4e4e4e;\n  background: var(--chrome-3);\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 0 10px;\n}\n\n#oracle-forms-mobile .url-dot {\n  width: 7px;\n  height: 7px;\n  border-radius: 50%;\n  background: #28c840;\n}\n\n#oracle-forms-mobile .oracle-scroll {\n  background: var(--oracle);\n  max-height: min(78dvh, 760px);\n  overflow-y: auto;\n  overscroll-behavior: contain;\n  -webkit-overflow-scrolling: touch;\n}\n\n#oracle-forms-mobile .oracle-scroll::-webkit-scrollbar {\n  width: 10px;\n}\n\n#oracle-forms-mobile .oracle-scroll::-webkit-scrollbar-thumb {\n  background: #a8a8a8;\n  border: 2px solid #d4d0c8;\n}\n\n#oracle-forms-mobile .toolbar {\n  display: flex;\n  gap: 6px;\n  padding: 8px;\n  border-bottom: 1px solid #8a8a8a;\n  background: #d4d0c8;\n  position: sticky;\n  top: 0;\n  z-index: 5;\n}\n\n#oracle-forms-mobile .tool-btn {\n  min-height: var(--touch);\n  min-width: var(--touch);\n  padding: 0 10px;\n  background: #d4d0c8;\n  border-top: 1px solid #fff;\n  border-left: 1px solid #fff;\n  border-right: 1px solid #444;\n  border-bottom: 1px solid #444;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#oracle-forms-mobile .app-content {\n  padding: 10px;\n  display: grid;\n  gap: 10px;\n}\n\n#oracle-forms-mobile .pane {\n  border-top: 1px solid #666;\n  border-left: 1px solid #666;\n  border-right: 1px solid #e0e0e0;\n  border-bottom: 1px solid #e0e0e0;\n  background: #e9e6de;\n  padding: 10px;\n}\n\n#oracle-forms-mobile .pane-head {\n  margin-bottom: 10px;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n#oracle-forms-mobile .pane-head .dot {\n  width: 10px;\n  height: 10px;\n  border-radius: 2px;\n  background: #ff7c00;\n  flex-shrink: 0;\n}\n\n#oracle-forms-mobile .field-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 8px;\n}\n\n#oracle-forms-mobile .field {\n  display: grid;\n  gap: 5px;\n}\n\n#oracle-forms-mobile .field-input {\n  min-height: var(--touch);\n  width: 100%;\n  border-top: 1px solid #666;\n  border-left: 1px solid #666;\n  border-right: 1px solid #e0e0e0;\n  border-bottom: 1px solid #e0e0e0;\n  background: #fff;\n  display: flex;\n  align-items: center;\n  padding: 0 10px;\n}\n\n#oracle-forms-mobile .field-input.textarea {\n  min-height: 98px;\n  align-items: flex-start;\n  padding-top: 10px;\n}\n\n#oracle-forms-mobile .field-select {\n  min-height: var(--touch);\n  width: 100%;\n  border-top: 1px solid #666;\n  border-left: 1px solid #666;\n  border-right: 1px solid #e0e0e0;\n  border-bottom: 1px solid #e0e0e0;\n  background: #fff;\n  display: flex;\n  align-items: stretch;\n}\n\n#oracle-forms-mobile .field-select .value {\n  flex: 1;\n  display: flex;\n  align-items: center;\n  padding: 0 10px;\n}\n\n#oracle-forms-mobile .field-select .drop {\n  width: 36px;\n  background: #d4d0c8;\n  border-top: 1px solid #fff;\n  border-left: 1px solid #fff;\n  border-right: 1px solid #444;\n  border-bottom: 1px solid #444;\n  appearance: none;\n  -webkit-appearance: none;\n  border-radius: 0;\n  padding: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n}\n\n#oracle-forms-mobile .field-select .drop:active,\n#oracle-forms-mobile .field-select.is-open .drop {\n  border-top: 1px solid #444;\n  border-left: 1px solid #444;\n  border-right: 1px solid #fff;\n  border-bottom: 1px solid #fff;\n}\n\n#oracle-forms-mobile .caret {\n  width: 0;\n  height: 0;\n  border-left: 4px solid transparent;\n  border-right: 4px solid transparent;\n  border-top: 6px solid #333;\n  transition: transform 0.15s ease;\n}\n\n#oracle-forms-mobile .field-select.is-open .caret {\n  transform: rotate(180deg);\n}\n\n#oracle-forms-mobile .row-actions {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 8px;\n}\n\n#oracle-forms-mobile .flat-btn {\n  min-height: var(--touch);\n  border-top: 1px solid #fff;\n  border-left: 1px solid #fff;\n  border-right: 1px solid #444;\n  border-bottom: 1px solid #444;\n  background: #d4d0c8;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#oracle-forms-mobile .wc-btn,\n#oracle-forms-mobile .nav-b,\n#oracle-forms-mobile .tool-btn,\n#oracle-forms-mobile .flat-btn,\n#oracle-forms-mobile .line-item,\n#oracle-forms-mobile .primary,\n#oracle-forms-mobile .secondary {\n  cursor: pointer;\n}\n\n#oracle-forms-mobile .tool-btn:active,\n#oracle-forms-mobile .flat-btn:active,\n#oracle-forms-mobile .secondary:active,\n#oracle-forms-mobile .primary:active {\n  border-top: 1px solid #444;\n  border-left: 1px solid #444;\n  border-right: 1px solid #fff;\n  border-bottom: 1px solid #fff;\n}\n\n#oracle-forms-mobile .nav-b:active,\n#oracle-forms-mobile .wc-btn:active {\n  background: rgba(255, 255, 255, 0.1);\n}\n\n#oracle-forms-mobile .line-item:active {\n  filter: brightness(0.95);\n}\n\n#oracle-forms-mobile .line-items {\n  display: grid;\n  gap: 8px;\n  margin-top: 8px;\n}\n\n#oracle-forms-mobile .line-item {\n  width: 100%;\n  border-top: 1px solid #666;\n  border-left: 1px solid #666;\n  border-right: 1px solid #e0e0e0;\n  border-bottom: 1px solid #e0e0e0;\n  background: #fff;\n  padding: 10px;\n  min-height: var(--touch);\n  display: grid;\n  grid-template-columns: 1fr auto;\n  gap: 8px;\n  align-items: center;\n}\n\n#oracle-forms-mobile .line-item.is-selected {\n  background: #ff7c00;\n}\n\n#oracle-forms-mobile .line-main {\n  display: grid;\n  grid-template-columns: 1fr;\n}\n\n#oracle-forms-mobile .item-chip {\n  width: 74%;\n  height: 10px;\n  border-radius: 4px;\n  background: #bcbcbc;\n}\n\n#oracle-forms-mobile .item-amt {\n  width: 58px;\n  height: 10px;\n  border-radius: 4px;\n  background: #bcbcbc;\n}\n\n#oracle-forms-mobile .line-item.is-selected .item-chip,\n#oracle-forms-mobile .line-item.is-selected .item-amt {\n  background: rgba(255, 255, 255, 0.9);\n}\n\n#oracle-forms-mobile .totals {\n  display: grid;\n  gap: 8px;\n}\n\n#oracle-forms-mobile .total-row {\n  display: grid;\n  grid-template-columns: 1fr auto;\n  align-items: center;\n  gap: 8px;\n}\n\n#oracle-forms-mobile .total-block {\n  width: 64%;\n  height: 8px;\n  border-radius: 4px;\n  background: #b0b0b0;\n}\n\n#oracle-forms-mobile .total-pill {\n  width: 74px;\n  height: 10px;\n  border-radius: 4px;\n  background: #8f8f8f;\n}\n\n#oracle-forms-mobile .action-bar {\n  position: sticky;\n  bottom: 0;\n  background: #d4d0c8;\n  border-top: 1px solid #888;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 8px;\n  padding: 8px;\n}\n\n#oracle-forms-mobile .primary,\n#oracle-forms-mobile .secondary {\n  min-height: var(--touch);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#oracle-forms-mobile .primary {\n  border-top: 1px solid #ffdcbf;\n  border-left: 1px solid #ffdcbf;\n  border-right: 1px solid #884b00;\n  border-bottom: 1px solid #884b00;\n  background: var(--accent);\n}\n\n#oracle-forms-mobile .primary .slug {\n  background: rgba(255, 255, 255, 0.95);\n}\n\n#oracle-forms-mobile .secondary {\n  border-top: 1px solid #fff;\n  border-left: 1px solid #fff;\n  border-right: 1px solid #444;\n  border-bottom: 1px solid #444;\n  background: #d4d0c8;\n}\n\n@media (min-width: 390px) {\n  #oracle-forms-mobile .field-grid.two-col {\n    grid-template-columns: 1fr 1fr;\n  }\n\n  #oracle-forms-mobile .row-actions {\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n  }\n}\n\n@media (min-width: 768px) {\n  #oracle-forms-mobile {\n    --device-max: 520px;\n  }\n\n  #oracle-forms-mobile .oracle-scroll {\n    max-height: min(80dvh, 860px);\n  }\n}\n<\/style>\n<\/head>\n<body>\n  <div id=\"oracle-forms-mobile\">\n    <div class=\"mobile-frame\">\n      <div class=\"browser\">\n      <div class=\"tabstrip\">\n        <div class=\"tabs-area\">\n          <div class=\"tab-active\">\n            <span class=\"tab-dot\"><\/span>\n            <span class=\"slug s3 w70\"><\/span>\n          <\/div>\n        <\/div>\n        <div class=\"win-controls\" aria-hidden=\"true\">\n          <div class=\"wc-btn\"><span class=\"wc-icon min\"><\/span><\/div>\n          <div class=\"wc-btn\"><span class=\"wc-icon max\"><\/span><\/div>\n          <div class=\"wc-btn close\"><span class=\"wc-icon close\"><\/span><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"chrome\">\n        <div class=\"nav\" aria-hidden=\"true\">\n          <div class=\"nav-b\"><span class=\"nav-icon left\"><\/span><\/div>\n          <div class=\"nav-b\"><span class=\"nav-icon right\"><\/span><\/div>\n          <div class=\"nav-b\"><span class=\"nav-icon refresh\"><\/span><\/div>\n        <\/div>\n        <div class=\"urlbar\">\n          <span class=\"url-dot\"><\/span>\n          <span class=\"slug s3 w80\"><\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"oracle-scroll\">\n        <div class=\"toolbar\">\n          <button class=\"tool-btn\" type=\"button\"><\/button>\n          <button class=\"tool-btn\" type=\"button\"><\/button>\n          <button class=\"tool-btn\" type=\"button\"><\/button>\n          <button class=\"tool-btn\" type=\"button\"><\/button>\n        <\/div>\n\n        <div class=\"app-content\">\n          <section class=\"pane\">\n            <div class=\"pane-head\">\n              <span class=\"dot\"><\/span>\n            <\/div>\n            <div class=\"field-grid two-col\">\n              <div class=\"field\">\n                <div class=\"field-input\"><\/div>\n              <\/div>\n              <div class=\"field\">\n                <div class=\"field-input\"><\/div>\n              <\/div>\n              <div class=\"field\">\n                <div class=\"field-input\"><\/div>\n              <\/div>\n              <div class=\"field\">\n                <div class=\"field-select\">\n                  <div class=\"value\"><\/div>\n                  <button class=\"drop\" type=\"button\" aria-label=\"Open dropdown\"><span class=\"caret\"><\/span><\/button>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/section>\n\n          <section class=\"pane\">\n            <div class=\"pane-head\">\n              <span class=\"dot\"><\/span>\n            <\/div>\n            <div class=\"field-grid two-col\">\n              <div class=\"field\">\n                <div class=\"field-input\"><\/div>\n              <\/div>\n              <div class=\"field\">\n                <div class=\"field-input\"><\/div>\n              <\/div>\n              <div class=\"field\">\n                <div class=\"field-select\">\n                  <div class=\"value\"><\/div>\n                  <button class=\"drop\" type=\"button\" aria-label=\"Open dropdown\"><span class=\"caret\"><\/span><\/button>\n                <\/div>\n              <\/div>\n              <div class=\"field\">\n                <div class=\"field-select\">\n                  <div class=\"value\"><\/div>\n                  <button class=\"drop\" type=\"button\" aria-label=\"Open dropdown\"><span class=\"caret\"><\/span><\/button>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/section>\n\n          <section class=\"pane\">\n            <div class=\"pane-head\">\n              <span class=\"dot\"><\/span>\n            <\/div>\n            <div class=\"row-actions\">\n              <button class=\"flat-btn\" type=\"button\"><\/button>\n              <button class=\"flat-btn\" type=\"button\"><\/button>\n              <button class=\"flat-btn\" type=\"button\"><\/button>\n              <button class=\"flat-btn\" type=\"button\"><\/button>\n            <\/div>\n            <div class=\"line-items\">\n              <button class=\"line-item is-selected\" type=\"button\">\n                <div class=\"line-main\">\n                  <span class=\"item-chip\"><\/span>\n                <\/div>\n                <span class=\"item-amt\"><\/span>\n              <\/button>\n              <button class=\"line-item\" type=\"button\">\n                <div class=\"line-main\">\n                  <span class=\"item-chip\"><\/span>\n                <\/div>\n                <span class=\"item-amt\"><\/span>\n              <\/button>\n              <button class=\"line-item\" type=\"button\">\n                <div class=\"line-main\">\n                  <span class=\"item-chip\"><\/span>\n                <\/div>\n                <span class=\"item-amt\"><\/span>\n              <\/button>\n              <button class=\"line-item\" type=\"button\">\n                <div class=\"line-main\">\n                  <span class=\"item-chip\"><\/span>\n                <\/div>\n                <span class=\"item-amt\"><\/span>\n              <\/button>\n            <\/div>\n          <\/section>\n\n          <section class=\"pane\">\n            <div class=\"pane-head\">\n              <span class=\"dot\"><\/span>\n            <\/div>\n            <div class=\"totals\">\n              <div class=\"total-row\">\n                <span class=\"total-block\"><\/span>\n                <span class=\"total-pill\"><\/span>\n              <\/div>\n              <div class=\"total-row\">\n                <span class=\"total-block\"><\/span>\n                <span class=\"total-pill\"><\/span>\n              <\/div>\n              <div class=\"total-row\">\n                <span class=\"total-block\"><\/span>\n                <span class=\"total-pill\"><\/span>\n              <\/div>\n            <\/div>\n            <div class=\"field\" style=\"margin-top:10px;\">\n              <div class=\"field-input textarea\"><\/div>\n            <\/div>\n          <\/section>\n        <\/div>\n\n        <div class=\"action-bar\">\n          <button class=\"secondary\" type=\"button\"><\/button>\n          <button class=\"primary\" type=\"button\"><\/button>\n        <\/div>\n      <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<script>\n(function () {\n  var root = document.getElementById('oracle-forms-mobile');\n  if (!root) return;\n\n  var rows = root.querySelectorAll('.line-item');\n  var drops = root.querySelectorAll('.field-select .drop');\n\n  rows.forEach(function (row) {\n    row.addEventListener('click', function () {\n      rows.forEach(function (other) { other.classList.remove('is-selected'); });\n      row.classList.add('is-selected');\n    });\n  });\n\n  drops.forEach(function (drop) {\n    drop.addEventListener('click', function (event) {\n      event.stopPropagation();\n      var select = drop.closest('.field-select');\n      select.classList.toggle('is-open');\n    });\n  });\n\n  document.addEventListener('click', function () {\n    root.querySelectorAll('.field-select.is-open').forEach(function (select) {\n      select.classList.remove('is-open');\n    });\n  });\n})();\n<\/script>\n<\/body>\n<\/html><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-separator size_medium\" id=\"p039\"><style>@media(max-width:600px){ #p039{height:20px!important}}<\/style><\/div><div class=\"w-text us_custom_18257d29 has_text_color\"><span class=\"w-text-h\"><span class=\"w-text-value\">POWERING ENTERPRISE SOFTWARE<\/span><\/span><\/div><div class=\"w-separator size_small\"><\/div><div class=\"w-grid us_custom_ed6e9462 items_valign_center, logo-strip type_carousel layout_gallery_default cols_6 valign_center\" id=\"us_grid_1\" style=\"--gap:1.5rem;\"><style>.layout_gallery_default .w-grid-item-h{}<\/style><div class=\"w-grid-list owl-carousel navstyle_circle navpos_outside\">\t<article class=\"w-grid-item post-354 attachment type-attachment status-inherit hentry\" data-id=\"354\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 stretched\"><img decoding=\"async\" width=\"300\" height=\"157\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Dalkia-300x157.png\" class=\"attachment-medium size-medium\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Dalkia-300x157.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Dalkia-1024x536.png 1024w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Dalkia.png 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\t\t<\/div>\r\n\t<\/article>\r\n\t<article class=\"w-grid-item post-351 attachment type-attachment status-inherit hentry\" data-id=\"351\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 stretched\"><img decoding=\"async\" width=\"300\" height=\"157\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Nasa-300x157.png\" class=\"attachment-medium size-medium\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Nasa-300x157.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Nasa-1024x536.png 1024w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Nasa.png 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\t\t<\/div>\r\n\t<\/article>\r\n\t<article class=\"w-grid-item post-346 attachment type-attachment status-inherit hentry\" data-id=\"346\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 stretched\"><img decoding=\"async\" width=\"300\" height=\"93\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/New_Euronext_logo-300x93.png\" class=\"attachment-medium size-medium\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/New_Euronext_logo-300x93.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/New_Euronext_logo-1024x318.png 1024w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/New_Euronext_logo.png 1935w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\t\t<\/div>\r\n\t<\/article>\r\n\t<article class=\"w-grid-item post-54 attachment type-attachment status-inherit hentry\" data-id=\"54\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 stretched\"><img decoding=\"async\" width=\"300\" height=\"122\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/ticketmaster.2d2be346-300x122.png\" class=\"attachment-medium size-medium\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/ticketmaster.2d2be346-300x122.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/ticketmaster.2d2be346.png 385w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\t\t<\/div>\r\n\t<\/article>\r\n\t<article class=\"w-grid-item post-52 attachment type-attachment status-inherit hentry\" data-id=\"52\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 stretched\"><img decoding=\"async\" width=\"300\" height=\"122\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/leonardo.de2f88e8-300x122.png\" class=\"attachment-medium size-medium\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/leonardo.de2f88e8-300x122.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/leonardo.de2f88e8.png 385w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\t\t<\/div>\r\n\t<\/article>\r\n\t<article class=\"w-grid-item post-48 attachment type-attachment status-inherit hentry\" data-id=\"48\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 stretched\"><img decoding=\"async\" width=\"300\" height=\"47\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Siemens-300x47.png\" class=\"attachment-medium size-medium\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Siemens-300x47.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/Siemens.png 564w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\t\t<\/div>\r\n\t<\/article>\r\n<\/div><div class=\"g-preloader type_1\">\r\n\t<div><\/div>\r\n<\/div>\r\n\t<div class=\"w-grid-json hidden\" onclick='return {&quot;action&quot;:&quot;us_ajax_grid&quot;,&quot;ajax_url&quot;:&quot;https:\\\/\\\/cheerpj.com\\\/wp-admin\\\/admin-ajax.php&quot;,&quot;infinite_scroll&quot;:0,&quot;max_num_pages&quot;:1,&quot;pagination&quot;:&quot;none&quot;,&quot;permalink_url&quot;:&quot;https:\\\/\\\/cheerpj.com\\\/wp-json\\\/wp\\\/v2\\\/pages\\\/17&quot;,&quot;template_vars&quot;:{&quot;columns&quot;:&quot;6&quot;,&quot;exclude_items&quot;:&quot;none&quot;,&quot;img_size&quot;:&quot;medium&quot;,&quot;ignore_items_size&quot;:0,&quot;items_layout&quot;:&quot;gallery_default&quot;,&quot;items_offset&quot;:&quot;1&quot;,&quot;load_animation&quot;:&quot;none&quot;,&quot;overriding_link&quot;:&quot;none&quot;,&quot;post_id&quot;:0,&quot;query_args&quot;:{&quot;post_type&quot;:[&quot;attachment&quot;],&quot;post__in&quot;:[&quot;54&quot;,&quot;52&quot;,&quot;48&quot;,&quot;346&quot;,&quot;354&quot;,&quot;351&quot;],&quot;post_status&quot;:&quot;inherit&quot;,&quot;post_mime_type&quot;:&quot;image&quot;,&quot;posts_per_page&quot;:999},&quot;orderby_query_args&quot;:{&quot;orderby&quot;:{&quot;date&quot;:&quot;DESC&quot;}},&quot;type&quot;:&quot;carousel&quot;,&quot;us_grid_ajax_index&quot;:1,&quot;us_grid_filter_params&quot;:null,&quot;us_grid_index&quot;:1,&quot;_us_grid_post_type&quot;:&quot;attachment&quot;,&quot;page_args&quot;:[]},&quot;carousel_settings&quot;:{&quot;autoHeight&quot;:0,&quot;autoplay&quot;:0,&quot;carousel_fade&quot;:0,&quot;center&quot;:0,&quot;dots&quot;:0,&quot;items&quot;:&quot;6&quot;,&quot;loop&quot;:false,&quot;nav&quot;:0,&quot;slideby&quot;:&quot;1&quot;,&quot;smooth_play&quot;:0,&quot;speed&quot;:250,&quot;timeout&quot;:3000,&quot;transition&quot;:&quot;&quot;,&quot;aria_labels&quot;:{&quot;prev&quot;:&quot;Previous&quot;,&quot;next&quot;:&quot;Next&quot;}},&quot;carousel_breakpoints&quot;:{&quot;0&quot;:{&quot;autoHeight&quot;:0,&quot;autoplay&quot;:1,&quot;autoplayHoverPause&quot;:1,&quot;items&quot;:3,&quot;loop&quot;:false,&quot;stagePadding&quot;:0},&quot;601&quot;:{&quot;autoHeight&quot;:0,&quot;autoplay&quot;:1,&quot;autoplayHoverPause&quot;:1,&quot;items&quot;:4,&quot;loop&quot;:false,&quot;stagePadding&quot;:0},&quot;1025&quot;:{&quot;autoHeight&quot;:0,&quot;autoplay&quot;:1,&quot;autoplayHoverPause&quot;:1,&quot;items&quot;:4,&quot;loop&quot;:false,&quot;stagePadding&quot;:0},&quot;1301&quot;:{&quot;items&quot;:6,&quot;stagePadding&quot;:0}}}'><\/div>\r\n\t<\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_df5f4c97 has_text_color height_custom\" id=\"why\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_middle type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner us_custom_de67d1db\"><div class=\"wpb_wrapper\"><div class=\"wpb_text_column us_custom_6dd57ca7\"><div class=\"wpb_wrapper\"><h2 style=\"text-align: center\" data-section-id=\"41rx4z\" data-start=\"534\" data-end=\"574\">Your Java applications still work.<\/h2>\n<h1 style=\"text-align: center\" data-section-id=\"41rx4z\" data-start=\"534\" data-end=\"574\"><span style=\"color: #ff7c00\">CheerpJ <\/span>makes sure they keep working.<\/h1>\n<\/div><\/div><div class=\"w-separator size_small\" id=\"hd4a\"><style>@media(max-width:600px){ #hd4a{height:3vh!important}}<\/style><\/div><div class=\"wpb_text_column us_custom_2c6bbd47\"><div class=\"wpb_wrapper\"><p style=\"text-align: center\" data-start=\"618\" data-end=\"731\">Rewriting critical systems is expensive, risky, and rarely necessary. CheerpJ runs Java applications in the browser, preserving your investment while simplifying deployment.<\/p>\n<\/div><\/div><div class=\"w-separator size_large\" id=\"dee9\"><style>@media(max-width:600px){ #dee9{height:3vh!important}}<\/style><\/div><div class=\"w-html us_custom_22c884ae hide_on_mobiles\"><div class=\"cj-oracle-asset\">\n  <style>\n    .cj-oracle-asset,\n    .cj-oracle-asset * { box-sizing: border-box; margin: 0; padding: 0; }\n\n    .cj-oracle-asset {\n      --bg: #0b0b0b;\n      --accent: #ff7c00;\n      width: 100%;\n      display: flex;\n      justify-content: center;\n      padding: 32px 20px 48px;\n      position: relative;\n      overflow: hidden;\n    }\n\n    .cj-oracle-asset::before {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      pointer-events: none;\n      background:\n        linear-gradient(rgba(255,255,255,0.05) 1px, transparent 1px),\n        linear-gradient(90deg, rgba(255,255,255,0.05) 1px, transparent 1px);\n      background-size: 56px 56px;\n      z-index: 0;\n    }\n\n    .cj-oracle-asset .nav-stage {\n      width: 100%;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      position: relative;\n      z-index: 1;\n    }\n\n    .cj-oracle-asset .nav-outer {\n      width: 900px;\n      max-width: 100%;\n      margin: 0 auto;\n      transform-origin: top center;\n      position: relative;\n      z-index: 1;\n    }\n\n    .cj-oracle-asset .browser {\n      width: 900px;\n      border-radius: 10px;\n      overflow: hidden;\n      box-shadow: 0 0 0 1px #333, 0 18px 40px rgba(0,0,0,0.45);\n      position: relative;\n      background: #1f1f1f;\n    }\n\n    .cj-oracle-asset .tabstrip {\n      background: #1e1e1e;\n      height: 36px;\n      padding: 0 0 0 8px;\n      display: flex;\n      align-items: flex-end;\n    }\n\n    .cj-oracle-asset .tabs-area {\n      flex: 1;\n      display: flex;\n      align-items: flex-end;\n      gap: 1px;\n    }\n\n    .cj-oracle-asset .tab-active {\n      background: #2c2c2c;\n      border-radius: 6px 6px 0 0;\n      height: 30px;\n      padding: 0 8px 0 10px;\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      border: 1px solid #3a3a3a;\n      border-bottom: 1px solid #2c2c2c;\n      position: relative;\n      top: 1px;\n      min-width: 320px;\n    }\n\n    .cj-oracle-asset .tab-favicon {\n      width: 14px;\n      height: 14px;\n      flex-shrink: 0;\n    }\n\n    .cj-oracle-asset .tab-favicon svg {\n      width: 14px;\n      height: 14px;\n    }\n\n    .cj-oracle-asset .tab-txt {\n      flex: 1;\n      font-size: 11px;\n      color: #ccc;\n      font-family: \"Segoe UI\", sans-serif;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .cj-oracle-asset .tab-x {\n      width: 14px;\n      height: 14px;\n      border-radius: 50%;\n      background: #444;\n      flex-shrink: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .cj-oracle-asset .win-controls {\n      display: flex;\n      align-self: stretch;\n    }\n\n    .cj-oracle-asset .wc-btn {\n      width: 46px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #bbb;\n      font-size: 13px;\n      font-family: sans-serif;\n      cursor: default;\n    }\n\n    .cj-oracle-asset .wc-btn:last-child:hover {\n      background: #c42b1c;\n      color: #fff;\n    }\n\n    .cj-oracle-asset .wc-bar {\n      width: 10px;\n      height: 1px;\n      background: #bbb;\n    }\n\n    .cj-oracle-asset .wc-box {\n      width: 10px;\n      height: 10px;\n      border: 1px solid #bbb;\n    }\n\n    .cj-oracle-asset .chrome {\n      background: #2c2c2c;\n      padding: 5px 10px;\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      border-bottom: 1px solid #1a1a1a;\n    }\n\n    .cj-oracle-asset .nav {\n      display: flex;\n      gap: 2px;\n    }\n\n    .cj-oracle-asset .nav-b {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #ccc;\n      font-size: 18px;\n      font-family: sans-serif;\n      line-height: 1;\n    }\n\n    .cj-oracle-asset .urlbar {\n      flex: 1;\n      height: 26px;\n      background: #3c3c3c;\n      border: 1px solid #4e4e4e;\n      border-radius: 20px;\n      display: flex;\n      align-items: center;\n      padding: 0 10px;\n      gap: 6px;\n    }\n\n    .cj-oracle-asset .url-dot {\n      width: 6px;\n      height: 6px;\n      border-radius: 50%;\n      background: #28c840;\n      flex-shrink: 0;\n    }\n\n    .cj-oracle-asset .url-text {\n      flex: 1;\n      font-size: 11px;\n      color: #cfcfcf;\n      font-family: \"Segoe UI\", sans-serif;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .cj-oracle-asset .cr {\n      display: flex;\n      gap: 3px;\n    }\n\n    .cj-oracle-asset .cr-b {\n      width: 22px;\n      height: 22px;\n      border-radius: 4px;\n      background: #3c3c3c;\n      border: 1px solid #4e4e4e;\n    }\n\n    .cj-oracle-asset .oracle-body {\n      background: #d4d0c8;\n      overflow: hidden;\n      user-select: none;\n    }\n\n    .cj-oracle-asset .win-titlebar {\n      background: linear-gradient(to right, #ff7c00, #ffd4b0);\n      height: 22px;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 0 4px 0 6px;\n    }\n\n    .cj-oracle-asset .win-title-text {\n      color: #fff;\n      font-size: 11px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      font-weight: bold;\n    }\n\n    .cj-oracle-asset .win-title-btns {\n      display: flex;\n      gap: 2px;\n    }\n\n    .cj-oracle-asset .win-title-btn {\n      width: 16px;\n      height: 14px;\n      background: #d4d0c8;\n      border-top: 1px solid #fff;\n      border-left: 1px solid #fff;\n      border-right: 1px solid #555;\n      border-bottom: 1px solid #555;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 9px;\n      color: #000;\n    }\n\n    .cj-oracle-asset .toolbar {\n      background: #d4d0c8;\n      border-bottom: 1px solid #888;\n      padding: 3px 5px;\n      display: flex;\n      align-items: center;\n      gap: 3px;\n    }\n\n    .cj-oracle-asset .win-btn {\n      height: 22px;\n      padding: 0 8px;\n      background: #d4d0c8;\n      border-top: 1px solid #ffffff;\n      border-left: 1px solid #ffffff;\n      border-right: 1px solid #444;\n      border-bottom: 1px solid #444;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 11px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #000;\n      gap: 4px;\n      flex-shrink: 0;\n    }\n\n    .cj-oracle-asset .btn-icon {\n      font-size: 12px;\n    }\n\n    .cj-oracle-asset .toolbar-sep {\n      width: 1px;\n      height: 18px;\n      background: #888;\n      margin: 0 2px;\n    }\n\n    .cj-oracle-asset .menubar {\n      background: #d4d0c8;\n      border-bottom: 1px solid #888;\n      padding: 1px 4px;\n      display: flex;\n      align-items: center;\n      gap: 0;\n    }\n\n    .cj-oracle-asset .menu-item {\n      padding: 2px 8px;\n      font-size: 11px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #000;\n    }\n\n    .cj-oracle-asset .content-area {\n      padding: 8px;\n      background: #d4d0c8;\n    }\n\n    .cj-oracle-asset .workspace {\n      display: grid;\n      grid-template-columns: 180px 1fr;\n      gap: 8px;\n    }\n\n    .cj-oracle-asset .sidebar-panel,\n    .cj-oracle-asset .main-panel {\n      background: #d4d0c8;\n      border-top: 1px solid #fff;\n      border-left: 1px solid #fff;\n      border-right: 1px solid #555;\n      border-bottom: 1px solid #555;\n    }\n\n    .cj-oracle-asset .panel-head {\n      background: linear-gradient(to right, #ff7c00 0%, #ff9d33 60%, #d4d0c8 100%);\n      padding: 3px 8px;\n    }\n\n    .cj-oracle-asset .panel-head span {\n      color: #fff;\n      font-size: 11px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      font-weight: bold;\n    }\n\n    .cj-oracle-asset .module-list {\n      padding: 6px;\n      display: flex;\n      flex-direction: column;\n      gap: 4px;\n    }\n\n    .cj-oracle-asset .module-item {\n      padding: 6px 8px;\n      font-size: 11px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #000;\n      background: #d4d0c8;\n      border-top: 1px solid #fff;\n      border-left: 1px solid #fff;\n      border-right: 1px solid #555;\n      border-bottom: 1px solid #555;\n    }\n\n    .cj-oracle-asset .module-item.active {\n      background: #ff7c00;\n      color: #fff;\n      font-weight: bold;\n    }\n\n    .cj-oracle-asset .form-wrap {\n      padding: 8px;\n    }\n\n    .cj-oracle-asset .form-window {\n      background: #fff;\n      border-top: 1px solid #666;\n      border-left: 1px solid #666;\n      border-right: 1px solid #e0e0e0;\n      border-bottom: 1px solid #e0e0e0;\n    }\n\n    .cj-oracle-asset .form-titlebar {\n      background: linear-gradient(to right, #ff7c00, #ffd4b0);\n      padding: 4px 8px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n\n    .cj-oracle-asset .form-title {\n      font-size: 11px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #fff;\n      font-weight: bold;\n    }\n\n    .cj-oracle-asset .form-state {\n      font-size: 10px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #fff;\n    }\n\n    .cj-oracle-asset .form-inner {\n      padding: 10px;\n    }\n\n    .cj-oracle-asset .form-grid {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 8px 12px;\n      margin-bottom: 10px;\n    }\n\n    .cj-oracle-asset .field-block {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .cj-oracle-asset .field-block.full {\n      grid-column: 1 \/ -1;\n    }\n\n    .cj-oracle-asset .field-label {\n      font-size: 10px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #444;\n      font-weight: bold;\n    }\n\n    .cj-oracle-asset .field-box {\n      min-height: 22px;\n      padding: 4px 6px;\n      background: #fff;\n      border-top: 1px solid #808080;\n      border-left: 1px solid #808080;\n      border-right: 1px solid #fff;\n      border-bottom: 1px solid #fff;\n      display: flex;\n      align-items: center;\n      font-size: 11px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #000;\n    }\n\n    .cj-oracle-asset .subtable {\n      width: 100%;\n      border-collapse: collapse;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      font-size: 11px;\n    }\n\n    .cj-oracle-asset .subtable th {\n      text-align: left;\n      background: #ece9d8;\n      padding: 5px 6px;\n      border: 1px solid #a5a5a5;\n      font-weight: bold;\n    }\n\n    .cj-oracle-asset .subtable td {\n      padding: 5px 6px;\n      border: 1px solid #c3c3c3;\n      background: #fff;\n    }\n\n    .cj-oracle-asset .statusbar {\n      background: #d4d0c8;\n      border-top: 1px solid #888;\n      padding: 2px 6px;\n      display: flex;\n      align-items: center;\n      gap: 6px;\n    }\n\n    .cj-oracle-asset .status-field {\n      flex: 1;\n      background: #d4d0c8;\n      border-top: 1px solid #808080;\n      border-left: 1px solid #808080;\n      border-right: 1px solid #fff;\n      border-bottom: 1px solid #fff;\n      height: 16px;\n      padding: 0 4px;\n      display: flex;\n      align-items: center;\n    }\n\n    .cj-oracle-asset .status-text {\n      font-size: 10px;\n      font-family: \"Tahoma\", \"Segoe UI\", sans-serif;\n      color: #000;\n    }\n\n    .cj-oracle-asset .loading-overlay {\n      position: absolute;\n      inset: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      padding: 24px;\n      background: rgba(0,0,0,0.16);\n    }\n\n    .cj-oracle-asset .loading-card {\n      width: 460px;\n      max-width: 100%;\n      background: #1f1f1f;\n      border-radius: 18px;\n      border: 1px solid #343434;\n      box-shadow: 0 18px 40px rgba(0,0,0,0.45);\n      padding: 24px;\n      transform: translateY(-16px);\n    }\n\n    .cj-oracle-asset .loading-head {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n      margin-bottom: 14px;\n    }\n\n    .cj-oracle-asset .loading-logo {\n      width: 38px;\n      height: 38px;\n      border-radius: 12px;\n      background: linear-gradient(135deg, #ff7c00, #ffb164);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #111;\n      font: 700 16px \"Segoe UI\", sans-serif;\n    }\n\n    .cj-oracle-asset .loading-title {\n      color: #fff;\n      font: 700 18px \"Segoe UI\", sans-serif;\n    }\n\n    .cj-oracle-asset .loading-copy {\n      color: #cfcfcf;\n      font: 400 14px\/1.5 \"Segoe UI\", sans-serif;\n      margin-bottom: 16px;\n    }\n\n    .cj-oracle-asset .progress {\n      height: 10px;\n      background: #343434;\n      border-radius: 999px;\n      overflow: hidden;\n      margin-bottom: 10px;\n    }\n\n    .cj-oracle-asset .progress span {\n      display: block;\n      height: 100%;\n      width: 72%;\n      background: linear-gradient(90deg, #ff7c00, #ffb164);\n    }\n\n    .cj-oracle-asset .progress-meta {\n      display: flex;\n      justify-content: space-between;\n      gap: 10px;\n      color: #a5a5a5;\n      font: 400 12px \"Segoe UI\", sans-serif;\n    }\n\n    @media (max-width: 860px) {\n      .cj-oracle-asset {\n        padding: 20px 12px 32px;\n      }\n    }\n  <\/style>\n\n  <div class=\"nav-stage\">\n    <div class=\"nav-outer\" id=\"navOuter\">\n      <div class=\"browser\">\n\n        <div class=\"tabstrip\">\n          <div class=\"tabs-area\">\n            <div class=\"tab-active\">\n              <div class=\"tab-favicon\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                  <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"4\" fill=\"#ff7c00\"><\/rect>\n                  <path d=\"M8.5 12h7\" stroke=\"white\" stroke-width=\"1.7\" stroke-linecap=\"round\"><\/path>\n                  <path d=\"M12 8.5v7\" stroke=\"white\" stroke-width=\"1.7\" stroke-linecap=\"round\"><\/path>\n                <\/svg>\n              <\/div>\n              <div class=\"tab-txt\"><\/div>\n              <div class=\"tab-x\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"win-controls\">\n            <div class=\"wc-btn\"><div class=\"wc-bar\"><\/div><\/div>\n            <div class=\"wc-btn\"><div class=\"wc-box\"><\/div><\/div>\n            <div class=\"wc-btn\">\u2715<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"chrome\">\n          <div class=\"nav\">\n            <div class=\"nav-b\">&#8592;<\/div>\n            <div class=\"nav-b\">&#8594;<\/div>\n            <div class=\"nav-b\">&#8635;<\/div>\n          <\/div>\n          <div class=\"urlbar\">\n            <div class=\"url-dot\"><\/div>\n            <div class=\"url-text\">https:\/\/apps.company.com\/forms\/ap_invoice.fmx?runtime=cheerpj<\/div>\n          <\/div>\n          <div class=\"cr\">\n            <div class=\"cr-b\"><\/div>\n            <div class=\"cr-b\"><\/div>\n            <div class=\"cr-b\"><\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"oracle-body\">\n          <div class=\"win-titlebar\">\n            <div class=\"win-title-text\">Oracle Forms Services - Accounts Payable<\/div>\n            <div class=\"win-title-btns\">\n              <div class=\"win-title-btn\">_<\/div>\n              <div class=\"win-title-btn\">\u25a1<\/div>\n              <div class=\"win-title-btn\">\u2715<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"toolbar\">\n            <div class=\"win-btn\"><span class=\"btn-icon\">\u2315<\/span>Find<\/div>\n            <div class=\"win-btn\">New<\/div>\n            <div class=\"win-btn\">Save<\/div>\n            <div class=\"toolbar-sep\"><\/div>\n            <div class=\"win-btn\">Approve<\/div>\n            <div class=\"win-btn\">Attach<\/div>\n            <div class=\"win-btn\">Print<\/div>\n          <\/div>\n\n          <div class=\"menubar\">\n            <div class=\"menu-item\">File<\/div>\n            <div class=\"menu-item\">Edit<\/div>\n            <div class=\"menu-item\">View<\/div>\n            <div class=\"menu-item\">Navigate<\/div>\n            <div class=\"menu-item\">Action<\/div>\n            <div class=\"menu-item\">Help<\/div>\n          <\/div>\n\n          <div class=\"content-area\">\n            <div class=\"workspace\">\n              <div class=\"sidebar-panel\">\n                <div class=\"panel-head\"><span>Navigator<\/span><\/div>\n                <div class=\"module-list\">\n                  <div class=\"module-item\">General Ledger<\/div>\n                  <div class=\"module-item active\">Accounts Payable<\/div>\n                  <div class=\"module-item\">Receivables<\/div>\n                  <div class=\"module-item\">Purchasing<\/div>\n                  <div class=\"module-item\">Inventory<\/div>\n                  <div class=\"module-item\">System Admin<\/div>\n                <\/div>\n              <\/div>\n\n              <div class=\"main-panel\">\n                <div class=\"panel-head\"><span>Invoice Workbench<\/span><\/div>\n                <div class=\"form-wrap\">\n                  <div class=\"form-window\">\n                    <div class=\"form-titlebar\">\n                      <div class=\"form-title\">Invoice Approval<\/div>\n                      <div class=\"form-state\">Session: FIN-OPS-2048<\/div>\n                    <\/div>\n                    <div class=\"form-inner\">\n                      <div class=\"form-grid\">\n                        <div class=\"field-block\">\n                          <div class=\"field-label\">Supplier<\/div>\n                          <div class=\"field-box\">Northbridge Industrial Components Ltd<\/div>\n                        <\/div>\n                        <div class=\"field-block\">\n                          <div class=\"field-label\">Invoice Number<\/div>\n                          <div class=\"field-box\">INV-104893<\/div>\n                        <\/div>\n                        <div class=\"field-block\">\n                          <div class=\"field-label\">Invoice Date<\/div>\n                          <div class=\"field-box\">16 Mar 2026<\/div>\n                        <\/div>\n                        <div class=\"field-block\">\n                          <div class=\"field-label\">Currency<\/div>\n                          <div class=\"field-box\">GBP<\/div>\n                        <\/div>\n                        <div class=\"field-block full\">\n                          <div class=\"field-label\">Description<\/div>\n                          <div class=\"field-box\">Monthly hardware maintenance contract and replacement parts for regional branch systems.<\/div>\n                        <\/div>\n                      <\/div>\n\n                      <table class=\"subtable\">\n                        <thead>\n                          <tr>\n                            <th>Line<\/th>\n                            <th>Cost Centre<\/th>\n                            <th>Description<\/th>\n                            <th>Amount<\/th>\n                            <th>Status<\/th>\n                          <\/tr>\n                        <\/thead>\n                        <tbody>\n                          <tr>\n                            <td>001<\/td>\n                            <td>FIN-221<\/td>\n                            <td>Maintenance services<\/td>\n                            <td>\u00a331,200<\/td>\n                            <td>Validated<\/td>\n                          <\/tr>\n                          <tr>\n                            <td>002<\/td>\n                            <td>OPS-118<\/td>\n                            <td>Replacement hardware<\/td>\n                            <td>\u00a39,880<\/td>\n                            <td>Validated<\/td>\n                          <\/tr>\n                          <tr>\n                            <td>003<\/td>\n                            <td>IT-074<\/td>\n                            <td>Shipping<\/td>\n                            <td>\u00a31,500<\/td>\n                            <td>Pending<\/td>\n                          <\/tr>\n                        <\/tbody>\n                      <\/table>\n                    <\/div>\n                  <\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"statusbar\">\n            <div class=\"status-field\" style=\"max-width:210px;\">\n              <span class=\"status-text\">Loading Oracle Forms<\/span>\n            <\/div>\n            <div class=\"status-field\">\n              <span class=\"status-text\">Java application running in browser via CheerpJ<\/span>\n            <\/div>\n            <div class=\"status-field\" style=\"max-width:120px;\">\n              <span class=\"status-text\">72%<\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"loading-overlay\">\n          <div class=\"loading-card\">\n            <div class=\"loading-head\">\n              <div class=\"loading-logo\">CJ<\/div>\n              <div class=\"loading-title\">CheerpJ is loading Oracle Forms<\/div>\n            <\/div>\n            <div class=\"loading-copy\">Initializing Java runtime, loading application classes, and starting the Oracle Forms session directly inside the browser.<\/div>\n            <div class=\"progress\"><span><\/span><\/div>\n            <div class=\"progress-meta\">\n              <span>Loading runtime and application assets<\/span>\n              <span>72%<\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function () {\n      var outer = document.getElementById('navOuter');\n      if (!outer) return;\n\n      var naturalW = 900;\n\n      function rescale() {\n        var viewportW = outer.parentElement ? outer.parentElement.offsetWidth : window.innerWidth;\n        var scale = Math.min(1, viewportW \/ naturalW);\n\n        outer.style.transform = 'scale(' + scale + ')';\n\n        var naturalH = outer.offsetHeight \/ (outer._lastScale || 1);\n        outer._lastScale = scale;\n        outer.style.marginBottom = ((scale - 1) * naturalH) + 'px';\n      }\n\n      rescale();\n      window.addEventListener('resize', rescale);\n    })();\n  <\/script>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_ef09d3b2 equal-cards-lg height_custom\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-text us_custom_eedcc7a2 has_text_color\"><span class=\"w-text-h\"><span class=\"w-text-value\">COMMON USE CASES<\/span><\/span><\/div><div class=\"w-separator size_small\"><\/div><div class=\"wpb_text_column us_custom_0e0bd212\"><div class=\"wpb_wrapper\"><h2 style=\"text-align: center\">Choose a starting point based on your application architecture, delivery model, or transformation strategy.<\/h2>\n<\/div><\/div><div class=\"w-separator size_large\"><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox modern-card iconpos_top style_default color_primary align_left\"><a href=\"\/run-oracle-forms-and-ebs-in-the-browser\/\" class=\"w-iconbox-link\" aria-label=\"Run Oracle Forms and EBS\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fal fa-database\"><\/i><\/div><\/a><div class=\"w-iconbox-meta\"><a href=\"\/run-oracle-forms-and-ebs-in-the-browser\/\" class=\"w-iconbox-link\" aria-label=\"Run Oracle Forms and EBS\"><h4 class=\"w-iconbox-title\">Run Oracle Forms and EBS<\/h4><\/a><div class=\"w-iconbox-text\"><p>Access Oracle Forms and EBS in modern browsers without plugins, desktop installs, or Java dependencies.<\/p>\n<p><a href=\"\/run-oracle-forms-and-ebs-in-the-browser\/\">View Solution<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox modern-card iconpos_top style_default color_primary align_left\"><a href=\"\/replace-citrix-vdi-java-applications\/\" class=\"w-iconbox-link\" aria-label=\"Replace Citrix \/ VDI\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fal fa-server\"><\/i><\/div><\/a><div class=\"w-iconbox-meta\"><a href=\"\/replace-citrix-vdi-java-applications\/\" class=\"w-iconbox-link\" aria-label=\"Replace Citrix \/ VDI\"><h4 class=\"w-iconbox-title\">Replace Citrix \/ VDI<\/h4><\/a><div class=\"w-iconbox-text\"><p>Run Java applications directly in the browser without virtual desktops, remote sessions, or infrastructure overhead.<\/p>\n<p><a href=\"\/replace-citrix-vdi-java-applications\/\">View Solution<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox modern-card iconpos_top style_default color_primary align_left\"><a href=\"\/de-risk-java-application-rewrites\/\" class=\"w-iconbox-link\" aria-label=\"De-risk Java rewrites\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fal fa-road\"><\/i><\/div><\/a><div class=\"w-iconbox-meta\"><a href=\"\/de-risk-java-application-rewrites\/\" class=\"w-iconbox-link\" aria-label=\"De-risk Java rewrites\"><h4 class=\"w-iconbox-title\">De-risk Java rewrites<\/h4><\/a><div class=\"w-iconbox-text\"><p>Maintain access to legacy Java applications while building their replacement, without relying on desktop Java or VDI.<\/p>\n<p><a href=\"\/de-risk-java-application-rewrites\/\">View Solution<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox modern-card iconpos_top style_default color_primary align_left\"><a href=\"\/run-java-applications-in-the-browser\/\" class=\"w-iconbox-link\" aria-label=\"Run Java applications in the browser\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fal fa-globe\"><\/i><\/div><\/a><div class=\"w-iconbox-meta\"><a href=\"\/run-java-applications-in-the-browser\/\" class=\"w-iconbox-link\" aria-label=\"Run Java applications in the browser\"><h4 class=\"w-iconbox-title\">Run Java applications in the browser<\/h4><\/a><div class=\"w-iconbox-text\"><p>Deliver existing Java applications through the browser without plugins, installs, or application rewrites.<\/p>\n<p><a href=\"\/run-java-applications-in-the-browser\/\">View Solution<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_df5f4c97 has_text_color height_custom\" id=\"how-cheerpj-runs\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_middle type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-text us_custom_eedcc7a2 has_text_color\"><span class=\"w-text-h\"><span class=\"w-text-value\">ARCHITECTURE<\/span><\/span><\/div><div class=\"w-separator size_small\" id=\"g3a3\"><style>@media(max-width:600px){ #g3a3{height:3vh!important}}<\/style><\/div><div class=\"wpb_text_column us_custom_0e0bd212\"><div class=\"wpb_wrapper\"><h2 style=\"text-align: center\">How CheerpJ runs Java applications in the browser<\/h2>\n<\/div><\/div><div class=\"wpb_text_column us_custom_b4af8d61\"><div class=\"wpb_wrapper\"><p style=\"text-align: center\">CheerpJ runs standard Java applications directly in the browser using WebAssembly. It provides a full OpenJDK runtime and Java Virtual Machine that executes Java bytecode without plugins, desktop installations, or source code changes.<\/p>\n<\/div><\/div><div class=\"w-separator size_large\"><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-6 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox modern-card modern-card-inner iconpos_left style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-window-maximize\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">1. Java Runtime in the Browser<\/h3><div class=\"w-iconbox-text\"><p>CheerpJ includes a full OpenJDK runtime compiled to WebAssembly and JavaScript. It supports Java 8, Java 11, and Java 17 applications and runs entirely inside modern browsers.<\/p>\n<\/div><\/div><\/div><div class=\"w-separator size_large\"><\/div><div class=\"w-iconbox modern-card modern-card-inner iconpos_left style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-gauge-high\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">3. Interpreter + JIT Optimization<\/h3><div class=\"w-iconbox-text\"><p>Java bytecode starts in an interpreter, while frequently used code is compiled Just-in-Time into optimized JavaScript for higher performance.<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-6 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox modern-card modern-card-inner iconpos_left style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-cubes\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">2. JVM Executes Java Bytecode<\/h3><div class=\"w-iconbox-text\"><p>Applications are loaded as standard JAR, class, or WAR deployments. CheerpJ executes the bytecode using a browser-based Java Virtual Machine.<\/p>\n<\/div><\/div><\/div><div class=\"w-separator size_large\"><\/div><div class=\"w-iconbox modern-card modern-card-inner iconpos_left style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-layer-group\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">4. Browser Integration Layer<\/h3><div class=\"w-iconbox-text\"><p>CheerpJ provides system services needed by enterprise applications, including virtual file system support, HTTP networking, Java \u2194 JavaScript interoperability, and AWT\/Swing rendering through HTML Canvas.<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_4a0b8401 has_text_color height_custom\" id=\"deployment\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_middle type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-text us_custom_eedcc7a2 has_text_color\"><span class=\"w-text-h\"><span class=\"w-text-value\">DEPLOYMENT<\/span><\/span><\/div><div class=\"w-separator size_small\" id=\"m0ab\"><style>@media(max-width:600px){ #m0ab{height:3vh!important}}<\/style><\/div><div class=\"wpb_text_column us_custom_b4af8d61\"><div class=\"wpb_wrapper\"><h2 style=\"text-align: center\">Easily deploy CheerpJ<\/h2>\n<p style=\"text-align: center\">CheerpJ is delivered as static WebAssembly and JavaScript assets. It can be hosted on any web server or CDN and integrated into a page with a simple <code>&lt;script&gt;<\/code> tag. No browser plugins or server-side components are required.<\/p>\n<\/div><\/div><div class=\"w-html\"><!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<style>\n.sourceview-component {\n  --bg: #000000;\n  --chrome: #1d1d1d;\n  --chrome-2: #2b2b2b;\n  --panel: #000000;\n  --line: #2d333b;\n  --text: #d9e1ea;\n  --muted: #8fa1b3;\n  --accent: #ff7c00;\n  width: 100%;\n  box-sizing: border-box;\n  font-family: \"Consolas\", \"Monaco\", \"SFMono-Regular\", monospace;\n}\n\n.sourceview-component * {\n  box-sizing: border-box;\n}\n\n.sourceview-component .sv-shell {\n  width: min(980px, 100%);\n  margin: 0 auto;\n  border-radius: 12px;\n  overflow: hidden;\n  box-shadow: 0 0 0 1px #2b2b2b, 0 20px 48px rgba(0, 0, 0, 0.45);\n  background: var(--bg);\n}\n\n.sourceview-component .sv-tabstrip {\n  background: var(--chrome);\n  height: 38px;\n  padding-left: 8px;\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n}\n\n.sourceview-component .sv-tab {\n  height: 31px;\n  min-width: 320px;\n  max-width: calc(100% - 140px);\n  border: 1px solid #3c3c3c;\n  border-bottom-color: var(--chrome-2);\n  border-radius: 8px 8px 0 0;\n  background: var(--chrome-2);\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 0 10px;\n  color: #d0d0d0;\n  font-size: 11px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.sourceview-component .sv-tab-dot {\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  background: var(--accent);\n  flex-shrink: 0;\n}\n\n.sourceview-component .sv-window-controls {\n  display: flex;\n  align-self: stretch;\n}\n\n.sourceview-component .sv-wc-btn {\n  width: 46px;\n  height: 38px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  cursor: default;\n}\n\n.sourceview-component .sv-wc-btn.close:hover {\n  background: #c42b1c;\n}\n\n.sourceview-component .sv-wc-icon {\n  position: relative;\n  display: block;\n}\n\n.sourceview-component .sv-wc-icon.min {\n  width: 10px;\n  height: 1px;\n  background: #bdbdbd;\n}\n\n.sourceview-component .sv-wc-icon.max {\n  width: 10px;\n  height: 10px;\n  border: 1px solid #bdbdbd;\n}\n\n.sourceview-component .sv-wc-icon.close {\n  width: 10px;\n  height: 10px;\n}\n\n.sourceview-component .sv-wc-icon.close::before,\n.sourceview-component .sv-wc-icon.close::after {\n  content: \"\";\n  position: absolute;\n  left: 4px;\n  top: 0;\n  width: 1px;\n  height: 10px;\n  background: #bdbdbd;\n}\n\n.sourceview-component .sv-wc-icon.close::before {\n  transform: rotate(45deg);\n}\n\n.sourceview-component .sv-wc-icon.close::after {\n  transform: rotate(-45deg);\n}\n\n.sourceview-component .sv-chrome {\n  background: var(--chrome-2);\n  border-bottom: 1px solid #1a1a1a;\n  padding: 6px 10px;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.sourceview-component .sv-nav {\n  display: flex;\n  gap: 2px;\n}\n\n.sourceview-component .sv-nav-btn {\n  width: 26px;\n  height: 26px;\n  border-radius: 50%;\n  color: #c6c6c6;\n  font-size: 14px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.sourceview-component .sv-urlbar {\n  flex: 1;\n  height: 28px;\n  border-radius: 14px;\n  border: 1px solid #4a4a4a;\n  background: #393939;\n  color: #9a9a9a;\n  font-size: 11px;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 0 10px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.sourceview-component .sv-dot {\n  width: 7px;\n  height: 7px;\n  border-radius: 50%;\n  background: #31d158;\n}\n\n.sourceview-component .sv-source {\n  background: var(--panel);\n  border-top: 1px solid #18202a;\n}\n\n.sourceview-component .sv-header {\n  padding: 10px 14px;\n  border-bottom: 1px solid var(--line);\n  color: var(--muted);\n  font-size: 11px;\n}\n\n.sourceview-component .sv-code {\n  margin: 0;\n  padding: 0;\n}\n\n.sourceview-component .sv-row {\n  display: grid;\n  grid-template-columns: 58px minmax(0, 1fr);\n  border-bottom: 1px solid rgba(255, 255, 255, 0.03);\n}\n\n.sourceview-component .sv-ln {\n  color: #6e8093;\n  background: #0b1015;\n  border-right: 1px solid var(--line);\n  text-align: right;\n  padding: 7px 10px 7px 0;\n  font-size: 12px;\n}\n\n.sourceview-component .sv-line {\n  padding: 7px 12px;\n  color: var(--text);\n  font-size: 13px;\n  line-height: 1.5;\n  overflow-wrap: anywhere;\n}\n\n.sourceview-component .token-tag { color: #ffffff; }\n.sourceview-component .token-attr { color: #e2e2e2; }\n.sourceview-component .token-string { color: #FF7C00; }\n.sourceview-component .token-text { color: #dce6f1; }\n.sourceview-component .token-comment { color: #89a06b; }\n\n@media (max-width: 720px) {\n  .sourceview-component .sv-tab {\n    min-width: 220px;\n  }\n\n  .sourceview-component .sv-row {\n    grid-template-columns: 44px minmax(0, 1fr);\n  }\n\n  .sourceview-component .sv-ln {\n    padding-right: 6px;\n    font-size: 11px;\n  }\n\n  .sourceview-component .sv-line {\n    font-size: 12px;\n  }\n}\n<\/style>\n<\/head>\n<body style=\"margin:0;\">\n<div class=\"sourceview-component\">\n  <div class=\"sv-shell\">\n    <div class=\"sv-tabstrip\">\n      <div class=\"sv-tab\">\n        <span class=\"sv-tab-dot\"><\/span>\n        <span>view-source:https:\/\/yourdomain.com\/javaapp<\/span>\n      <\/div>\n      <div class=\"sv-window-controls\">\n        <div class=\"sv-wc-btn\"><span class=\"sv-wc-icon min\" aria-hidden=\"true\"><\/span><\/div>\n        <div class=\"sv-wc-btn\"><span class=\"sv-wc-icon max\" aria-hidden=\"true\"><\/span><\/div>\n        <div class=\"sv-wc-btn close\"><span class=\"sv-wc-icon close\" aria-hidden=\"true\"><\/span><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"sv-chrome\">\n      <div class=\"sv-nav\">\n        <div class=\"sv-nav-btn\">&#8592;<\/div>\n        <div class=\"sv-nav-btn\">&#8594;<\/div>\n        <div class=\"sv-nav-btn\">&#8635;<\/div>\n      <\/div>\n      <div class=\"sv-urlbar\">\n        <span class=\"sv-dot\"><\/span>\n        <span>view-source:https:\/\/yourdomain.com\/javaapp<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"sv-source\">\n      <div class=\"sv-header\">index.html<\/div>\n      <div class=\"sv-code\" role=\"table\" aria-label=\"Page source code\">\n        <div class=\"sv-row\" role=\"row\">\n          <div class=\"sv-ln\" role=\"cell\">1<\/div>\n          <div class=\"sv-line\" role=\"cell\">\n            <span class=\"token-tag\">&lt;script<\/span> <span class=\"token-attr\">src<\/span><span class=\"token-text\">=<\/span><span class=\"token-string\">\"https:\/\/cjrtnc.leaningtech.com\/4.2\/loader.js\"<\/span><span class=\"token-tag\">&gt;&lt;\/script&gt;<\/span>          <\/div>\n        <\/div>\n        <div class=\"sv-row\" role=\"row\">\n          <div class=\"sv-ln\" role=\"cell\">2<\/div>\n          <div class=\"sv-line\" role=\"cell\">\n            <span class=\"token-comment\"><\/span>\n          <\/div>\n        <\/div>\n        <div class=\"sv-row\" role=\"row\">\n          <div class=\"sv-ln\" role=\"cell\">3<\/div>\n          <div class=\"sv-line\" role=\"cell\">\n            <span class=\"token-comment\"><\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n<\/body>\n<\/html>\n<\/div><\/div><\/div><\/div><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_11933f30 equal-cards has_text_color height_custom\" id=\"compare-plans\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_middle type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-text us_custom_eedcc7a2 has_text_color\"><span class=\"w-text-h\"><span class=\"w-text-value\">PLATFORM SUPPORT<\/span><\/span><\/div><div class=\"w-separator size_small\"><\/div><div class=\"wpb_text_column us_custom_b4af8d61\"><div class=\"wpb_wrapper\"><h2 style=\"text-align: center\">Enterprise Java compatibility<\/h2>\n<p style=\"text-align: center\" data-start=\"707\" data-end=\"947\">CheerpJ provides a browser-based JVM built on OpenJDK, with full Java language compatibility and bytecode-level execution. Supports standard JAR and WAR deployments, including Swing and AWT applications, without requiring a client-side JVM.<\/p>\n<\/div><\/div><div class=\"w-separator size_medium\"><\/div><div class=\"g-cols wpb_row equal-cards via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox modern-card modern-card-inner iconpos_top style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-cubes\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">Java Versions<\/h3><div class=\"w-iconbox-text\"><p style=\"text-align: left\">\u2714\ufe0f 8, 11, 17 (preview)<br \/>\n\u2714\ufe0f Java bytecode execution in the browser<br \/>\n\u2714\ufe0f Full Java runtime delivered client-side (WebAssembly-based)<br \/>\n\u2714\ufe0f Use for long-running applications that are difficult to rewrite<\/p>\n<\/div><\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox us_custom_612a817d modern-card modern-card-inner iconpos_top style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-table-cells\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">UI and graphics<\/h3><div class=\"w-iconbox-text\"><p>\u2714\ufe0f Standard Swing\/AWT widgets<br \/>\n\u2714\ufe0f Multiple windows within the application UI<br \/>\n\u2714\ufe0f Typical enterprise UI workflows (forms, tables, dialogs)<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner us_custom_612a817d\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox us_custom_612a817d modern-card modern-card-inner iconpos_top style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-globe\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">Networking<\/h3><div class=\"w-iconbox-text\"><p>\u2714\ufe0f HTTP\/HTTPS networking<br \/>\n\u2714\ufe0f Backend services remain unchanged<br \/>\n\u2714\ufe0f Works with existing application APIs and service endpoints<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-3 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-iconbox us_custom_612a817d modern-card modern-card-inner iconpos_top style_default color_primary align_left\"><div class=\"w-iconbox-icon\" style=\"font-size:2rem;\"><i class=\"fas fa-rocket\"><\/i><\/div><div class=\"w-iconbox-meta\"><h3 class=\"w-iconbox-title\" style=\"font-size:16px;\">Deployment<\/h3><div class=\"w-iconbox-text\"><p>\u2714\ufe0f On-premise<br \/>\n\u2714\ufe0f Controlled enterprise environments<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_df5f4c97 has_text_color height_auto\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner us_custom_7e54f265\"><div class=\"wpb_wrapper\"><div class=\"w-text us_custom_eedcc7a2 has_text_color\"><span class=\"w-text-h\"><span class=\"w-text-value\">PRODUCT SUITE<\/span><\/span><\/div><div class=\"w-separator size_small\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 style=\"text-align: center\">Explore our Java execution tools for the browser<\/h2>\n<\/div><\/div><div class=\"w-separator size_medium\"><\/div><div class=\"g-cols wpb_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-4 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-vwrapper us_custom_c1f5c669 product-card has_text_color align_none valign_top\" style=\"--vwrapper-gap:1.20rem\"><div class=\"w-image us_custom_fccc0abd align_center\"><div class=\"w-image-h\"><img decoding=\"async\" width=\"400\" height=\"400\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx-400x400.png\" class=\"attachment-us_400_400 size-us_400_400\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx-400x400.png 400w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx-300x300.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx-150x150.png 150w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx-12x12.png 12w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx-700x700.png 700w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx-80x80.png 80w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png 1024w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/div><\/div><div class=\"wpb_text_column us_custom_6df4bc3a has_text_color\"><div class=\"wpb_wrapper\"><h5 style=\"text-align: center\"><strong>CheerpJ Core<\/strong><\/h5>\n<p style=\"text-align: center\">The main CheerpJ tool for developers. A JVM \/ OpenJDK distribution in JavaScript and WebAssembly. Runs full Java apps and libraries in the browser.<\/p>\n<\/div><\/div><div class=\"w-btn-wrapper align_center\"><a class=\"w-btn us-btn-style_7 us_custom_0998e206 has_text_color\" title=\"CheerpJ Core\" href=\"https:\/\/cheerpj.com\/cheerpj-core\/\"><span class=\"w-btn-label\">Learn More<\/span><\/a><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-4 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-vwrapper us_custom_c1f5c669 product-card has_text_color align_none valign_top\" style=\"--vwrapper-gap:1.20rem\"><div class=\"w-image us_custom_fccc0abd align_center\"><div class=\"w-image-h\"><img decoding=\"async\" width=\"400\" height=\"400\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx-400x400.png\" class=\"attachment-us_400_400 size-us_400_400\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx-400x400.png 400w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx-300x300.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx-150x150.png 150w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx-12x12.png 12w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx-700x700.png 700w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx-80x80.png 80w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_jnlp_glassfx.png 1024w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/div><\/div><div class=\"wpb_text_column us_custom_6df4bc3a has_text_color\"><div class=\"wpb_wrapper\"><h5 style=\"text-align: center\"><strong>CheerpJ JNLP Runner<\/strong><\/h5>\n<p style=\"text-align: center\">An end-user tool to run Java Web Start apps in Chrome or Edge \u2013 without installing Java locally. Perfect for legacy enterprise applications.<\/p>\n<\/div><\/div><div class=\"w-btn-wrapper align_center\"><a class=\"w-btn us-btn-style_7 us_custom_0998e206 has_text_color\" title=\"CheerpJ JNLP Runner\" href=\"https:\/\/cheerpj.com\/cheerpj-jnlp-runner\/\"><span class=\"w-btn-label\">Learn More<\/span><\/a><\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-4 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-vwrapper us_custom_c1f5c669 product-card has_text_color align_none valign_top\" style=\"--vwrapper-gap:1.20rem\"><div class=\"w-image us_custom_fccc0abd align_center\"><div class=\"w-image-h\"><img decoding=\"async\" width=\"400\" height=\"400\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx-400x400.png\" class=\"attachment-us_400_400 size-us_400_400\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx-400x400.png 400w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx-300x300.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx-150x150.png 150w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx-12x12.png 12w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx-700x700.png 700w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx-80x80.png 80w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_applets_logo_glassfx.png 1024w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/div><\/div><div class=\"wpb_text_column us_custom_6df4bc3a has_text_color\"><div class=\"wpb_wrapper\"><h5 style=\"text-align: center\"><strong>CheerpJ Applet Runner<\/strong><\/h5>\n<p style=\"text-align: center\">An end-user tool to run Java Applets on modern browsers. Works instantly on Chrome or Edge, no code changes required.<\/p>\n<\/div><\/div><div class=\"w-btn-wrapper align_center\"><a class=\"w-btn us-btn-style_7 us_custom_0998e206 has_text_color\" title=\"CheerpJ Applet Runner\" href=\"https:\/\/cheerpj.com\/cheerpj-applet-runner\/\"><span class=\"w-btn-label\">Learn More<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"w-separator size_medium\"><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_5a1af65e demo-section has_text_color height_custom full_height valign_center\" id=\"demo\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-6 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"wpb_text_column hide_on_tablets hide_on_mobiles\"><div class=\"wpb_wrapper\"><h2>Request a demo<\/h2>\n<\/div><\/div><div class=\"w-separator size_medium\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p class=\"text-xl mt-8\">Discover how to modernize and improve access to your legacy Java applications with CheerpJ.<\/p>\n<p class=\"text-xl mt-4\">Schedule a free demo with our team to learn how CheerpJ can help address your Java requirements.<\/p>\n<p class=\"text-xl mt-4\">Fill in the form or book a demo directly <a href=\"https:\/\/cheerpj.com\/book-demo\/\">here<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"vc_col-sm-6 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f419-o1\" lang=\"en-GB\" dir=\"ltr\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/wp-json\/wp\/v2\/pages\/17#wpcf7-f419-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"419\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"5.9.2\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_GB\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f419-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/div>\n<div class=\"halfit\">\n\t<p><label> Name<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span> <\/label>\n\t<\/p>\n<\/div>\n<div class=\"halfit\">\n\t<p><label> Email address<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span> <\/label>\n\t<\/p>\n<\/div>\n<div class=\"halfit\">\n\t<p><label> Phone number (optional)<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-tel\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-tel wpcf7-text wpcf7-validates-as-tel\" aria-invalid=\"false\" value=\"\" type=\"tel\" name=\"your-tel\" \/><\/span><\/label>\n\t<\/p>\n<\/div>\n<p><label> How can we help?<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" placeholder=\"Hi there, I would like to...\" name=\"your-message\"><\/textarea><\/span> <\/label>\n<\/p>\n<p>\n\t<font size=\"-1\">Leaning Technologies needs the contact information you provide to contact you about our products and services. You may unsubscribe from these communications at any time. For information on how to unsubscribe, as well as our privacy practices and commitment to protecting your privacy, check out our <a href=\"https:\/\/leaningtech.com\/privacy-policy\/\" target=\"_blank\">Privacy Policy<\/a>.\n\t<\/font>\n<\/p>\n<div class=\"submitbutton\">\n\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Submit\" \/>\n\t<\/p>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_custom\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-text us_custom_eedcc7a2 has_text_color\"><span class=\"w-text-h\"><span class=\"w-text-value\">RESOURCES<\/span><\/span><\/div><div class=\"w-separator size_small\"><\/div><div class=\"wpb_text_column us_custom_a5c88937 hide_on_tablets hide_on_mobiles\"><div class=\"wpb_wrapper\"><h2 style=\"text-align: center\">Learn More About CheerpJ<\/h2>\n<\/div><\/div><div class=\"wpb_text_column us_custom_a5c88937 hide_on_default hide_on_laptops\"><div class=\"wpb_wrapper\"><h4 style=\"text-align: center\"><strong>Learn More About CheerpJ<\/strong><\/h4>\n<\/div><\/div><div class=\"w-separator size_large\"><\/div><div class=\"w-grid type_grid layout_174 cols_3 overflow_hidden\" id=\"us_grid_2\" style=\"--gap:1rem;\" data-filterable=\"true\"><style>@media (max-width:1024px){#us_grid_2 .w-grid-list{margin:0}#us_grid_2 .w-grid-item{width:100%;padding:0;margin-bottom:var(--gap,0px)}}@media (max-width:600px){#us_grid_2 .w-grid-list{margin:0}#us_grid_2 .w-grid-item{width:100%;padding:0;margin-bottom:var(--gap,0px)}}.layout_174 .w-grid-item-h{background:var(--color-content-bg);color:var(--color-content-text);border-radius:0.3rem;box-shadow:0 0.03rem 0.06rem rgba(0,0,0,0.1),0 0.1rem 0.3rem rgba(0,0,0,0.1);transition-duration:0.3s}.no-touch .layout_174 .w-grid-item-h:hover{box-shadow:0 0.1rem 0.2rem rgba(0,0,0,0.1),0 0.33rem 1rem rgba(0,0,0,0.15);z-index:4}.layout_174 .usg_post_title_1{transition-duration:0.3s;transform-origin:50% 50%;transform:scale(1) translate(0%,0%)}.layout_174 .w-grid-item-h:hover .usg_post_title_1{transform:scale(1) translate(0%,0%);opacity:1}.layout_174 .usg_post_title_1{font-size:20px!important;font-weight:500!important;min-height:120px!important;padding-bottom:5%!important}.layout_174 .usg_vwrapper_1{padding:5%!important}.layout_174 .usg_post_taxonomy_1{color:var(--color-header-middle-text-hover)!important;font-weight:300!important}@media (max-width:600px){.layout_174 .usg_post_title_1{font-size:1.2rem!important}}<\/style><div class=\"w-grid-list\">\t<article class=\"w-grid-item post-3490 post type-post status-publish format-standard has-post-thumbnail hentry category-applets category-java-access\" data-id=\"3490\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 has_ratio\"><div style=\"padding-bottom:56.25%\"><\/div><a href=\"https:\/\/cheerpj.com\/how-to-access-enterprise-java-applets\/\" aria-label=\"How to access Enterprise Java Applets\"><img decoding=\"async\" width=\"1024\" height=\"536\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets-1024x536.jpg\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets-1024x536.jpg 1024w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets-300x157.jpg 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets-18x9.jpg 18w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets-700x366.jpg 700w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets-400x209.jpg 400w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets-80x42.jpg 80w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/Enterprise-Java-Applets.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/div><div class=\"w-vwrapper usg_vwrapper_1 align_none valign_top\" style=\"--vwrapper-gap:0.3rem\"><h4 class=\"w-post-elm post_title usg_post_title_1 entry-title color_link_inherit\"><a href=\"https:\/\/cheerpj.com\/how-to-access-enterprise-java-applets\/\">How to access Enterprise Java Applets<\/a><\/h4><div class=\"w-vwrapper usg_vwrapper_2 align_none valign_bottom\"><div class=\"w-post-elm post_taxonomy usg_post_taxonomy_1 has_text_color style_simple color_link_inherit\"><a class=\"term-13 term-applets\" href=\"https:\/\/cheerpj.com\/category\/applets\/\">Applets<\/a>, <a class=\"term-32 term-java-access\" href=\"https:\/\/cheerpj.com\/category\/java-access\/\">Java Access<\/a><\/div><\/div><\/div>\t\t<\/div>\r\n\t<\/article>\r\n\t<article class=\"w-grid-item post-3546 post type-post status-publish format-standard has-post-thumbnail hentry category-java-access category-java-web-start category-jnlp\" data-id=\"3546\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 has_ratio\"><div style=\"padding-bottom:56.25%\"><\/div><a href=\"https:\/\/cheerpj.com\/modern-ways-to-access-java-web-start-applications\/\" aria-label=\"Modern ways to access Java Web Start applications\"><img decoding=\"async\" width=\"1024\" height=\"536\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS-1024x536.png\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS-1024x536.png 1024w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS-300x157.png 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS-18x9.png 18w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS-700x366.png 700w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS-400x209.png 400w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS-80x42.png 80w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/01\/JWS.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/div><div class=\"w-vwrapper usg_vwrapper_1 align_none valign_top\" style=\"--vwrapper-gap:0.3rem\"><h4 class=\"w-post-elm post_title usg_post_title_1 entry-title color_link_inherit\"><a href=\"https:\/\/cheerpj.com\/modern-ways-to-access-java-web-start-applications\/\">Modern ways to access Java Web Start applications<\/a><\/h4><div class=\"w-vwrapper usg_vwrapper_2 align_none valign_bottom\"><div class=\"w-post-elm post_taxonomy usg_post_taxonomy_1 has_text_color style_simple color_link_inherit\"><a class=\"term-32 term-java-access\" href=\"https:\/\/cheerpj.com\/category\/java-access\/\">Java Access<\/a>, <a class=\"term-5 term-java-web-start\" href=\"https:\/\/cheerpj.com\/category\/java-web-start\/\">Java Web Start<\/a>, <a class=\"term-26 term-jnlp\" href=\"https:\/\/cheerpj.com\/category\/jnlp\/\">JNLP<\/a><\/div><\/div><\/div>\t\t<\/div>\r\n\t<\/article>\r\n\t<article class=\"w-grid-item post-4272 post type-post status-publish format-standard has-post-thumbnail hentry category-company-news\" data-id=\"4272\">\r\n\t\t<div class=\"w-grid-item-h\">\r\n\t\t\t\t\t\t<div class=\"w-post-elm post_image usg_post_image_1 has_ratio\"><div style=\"padding-bottom:56.25%\"><\/div><a href=\"https:\/\/cheerpj.com\/leaning-technologies-and-st-idea-partner-to-accelerate-java-application-modernisation-in-spain\/\" aria-label=\"Leaning Technologies and ST Idea Partner to Accelerate Java Application Modernisation in Spain\"><img decoding=\"async\" width=\"1024\" height=\"536\" src=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1-1024x536.jpg\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1-1024x536.jpg 1024w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1-300x157.jpg 300w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1-18x9.jpg 18w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1-700x366.jpg 700w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1-400x209.jpg 400w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1-80x42.jpg 80w, https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2025\/11\/LT-x-ST-Idea-1.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/div><div class=\"w-vwrapper usg_vwrapper_1 align_none valign_top\" style=\"--vwrapper-gap:0.3rem\"><h4 class=\"w-post-elm post_title usg_post_title_1 entry-title color_link_inherit\"><a href=\"https:\/\/cheerpj.com\/leaning-technologies-and-st-idea-partner-to-accelerate-java-application-modernisation-in-spain\/\">Leaning Technologies and ST Idea Partner to Accelerate Java Application Modernisation in Spain<\/a><\/h4><div class=\"w-vwrapper usg_vwrapper_2 align_none valign_bottom\"><div class=\"w-post-elm post_taxonomy usg_post_taxonomy_1 has_text_color style_simple color_link_inherit\"><a class=\"term-16 term-company-news\" href=\"https:\/\/cheerpj.com\/category\/company-news\/\">Company News<\/a><\/div><\/div><\/div>\t\t<\/div>\r\n\t<\/article>\r\n<\/div><div class=\"w-grid-preloader\"><div class=\"g-preloader type_1\">\r\n\t<div><\/div>\r\n<\/div>\r\n<\/div>\t<div class=\"w-grid-json hidden\" onclick='return {&quot;action&quot;:&quot;us_ajax_grid&quot;,&quot;ajax_url&quot;:&quot;https:\\\/\\\/cheerpj.com\\\/wp-admin\\\/admin-ajax.php&quot;,&quot;infinite_scroll&quot;:0,&quot;max_num_pages&quot;:18,&quot;pagination&quot;:&quot;none&quot;,&quot;permalink_url&quot;:&quot;https:\\\/\\\/cheerpj.com\\\/wp-json\\\/wp\\\/v2\\\/pages\\\/17&quot;,&quot;template_vars&quot;:{&quot;columns&quot;:&quot;3&quot;,&quot;exclude_items&quot;:&quot;none&quot;,&quot;img_size&quot;:&quot;default&quot;,&quot;ignore_items_size&quot;:0,&quot;items_layout&quot;:&quot;174&quot;,&quot;items_offset&quot;:&quot;1&quot;,&quot;load_animation&quot;:&quot;none&quot;,&quot;overriding_link&quot;:&quot;none&quot;,&quot;post_id&quot;:0,&quot;query_args&quot;:{&quot;post_type&quot;:[&quot;post&quot;],&quot;tax_query&quot;:[{&quot;taxonomy&quot;:&quot;category&quot;,&quot;field&quot;:&quot;slug&quot;,&quot;terms&quot;:[&quot;applets&quot;,&quot;cheerpj-3-0&quot;,&quot;enterprise-java-applications&quot;,&quot;java-web-start&quot;,&quot;oracle-forms&quot;,&quot;release&quot;,&quot;cheerpj&quot;,&quot;cheerpj-applet-runner&quot;,&quot;cheerpj-jnlp-runner&quot;,&quot;company-news&quot;,&quot;developer&quot;,&quot;customer-story&quot;,&quot;enterprise&quot;,&quot;java-access&quot;,&quot;modernization&quot;]}],&quot;post_status&quot;:[&quot;publish&quot;],&quot;posts_per_page&quot;:&quot;3&quot;},&quot;orderby_query_args&quot;:{&quot;orderby&quot;:{&quot;date&quot;:&quot;DESC&quot;}},&quot;type&quot;:&quot;grid&quot;,&quot;us_grid_ajax_index&quot;:2,&quot;us_grid_filter_params&quot;:null,&quot;us_grid_index&quot;:2,&quot;_us_grid_post_type&quot;:&quot;post&quot;,&quot;page_args&quot;:[]}}'><\/div>\r\n\t<\/div><\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"Leaning Technologies has partnered with ST Idea to make CheerpJ\u2019s advanced Java-to-Web modernisation technology available to enterprise customers across Spain. The collaboration combines CheerpJ\u2019s proven ability to bring legacy Java applications into modern browsers with ST Idea\u2019s local expertise in digital transformation and strong presence within the Oracle Spanish ecosystem. Helping Enterprises Modernise Java and...","protected":false},"author":4,"featured_media":4599,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Run Java in Modern Browsers | No plugin. No local JRE. | CheerpJ<\/title>\n<meta name=\"description\" content=\"CheerpJ is the only solution to run any large-scale, unmodified Java applications, applets, or libraries in modern browsers. No plugin. No local JRE.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cheerpj.com\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Run Java in Modern Browsers | No plugin. No local JRE. | CheerpJ\" \/>\n<meta property=\"og:description\" content=\"CheerpJ is the only solution to run any large-scale, unmodified Java applications, applets, or libraries in modern browsers. No plugin. No local JRE.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cheerpj.com\/\" \/>\n<meta property=\"og:site_name\" content=\"CheerpJ\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-13T12:33:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cheerpj.com\/\",\"url\":\"https:\/\/cheerpj.com\/\",\"name\":\"Run Java in Modern Browsers | No plugin. No local JRE. | CheerpJ\",\"isPartOf\":{\"@id\":\"https:\/\/cheerpj.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cheerpj.com\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cheerpj.com\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png\",\"datePublished\":\"2023-08-14T14:10:06+00:00\",\"dateModified\":\"2026-04-13T12:33:12+00:00\",\"description\":\"CheerpJ is the only solution to run any large-scale, unmodified Java applications, applets, or libraries in modern browsers. No plugin. No local JRE.\",\"breadcrumb\":{\"@id\":\"https:\/\/cheerpj.com\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cheerpj.com\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/cheerpj.com\/#primaryimage\",\"url\":\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png\",\"contentUrl\":\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cheerpj.com\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cheerpj.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CheerpJ\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cheerpj.com\/#website\",\"url\":\"https:\/\/cheerpj.com\/\",\"name\":\"CheerpJ\",\"description\":\"The complete Java runtime for modern browsers\",\"publisher\":{\"@id\":\"https:\/\/cheerpj.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cheerpj.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cheerpj.com\/#organization\",\"name\":\"CheerpJ\",\"url\":\"https:\/\/cheerpj.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/cheerpj.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/CheerpJ_Favicon.png\",\"contentUrl\":\"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/CheerpJ_Favicon.png\",\"width\":512,\"height\":512,\"caption\":\"CheerpJ\"},\"image\":{\"@id\":\"https:\/\/cheerpj.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Run Java in Modern Browsers | No plugin. No local JRE. | CheerpJ","description":"CheerpJ is the only solution to run any large-scale, unmodified Java applications, applets, or libraries in modern browsers. No plugin. No local JRE.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cheerpj.com\/","og_locale":"en_GB","og_type":"article","og_title":"Run Java in Modern Browsers | No plugin. No local JRE. | CheerpJ","og_description":"CheerpJ is the only solution to run any large-scale, unmodified Java applications, applets, or libraries in modern browsers. No plugin. No local JRE.","og_url":"https:\/\/cheerpj.com\/","og_site_name":"CheerpJ","article_modified_time":"2026-04-13T12:33:12+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cheerpj.com\/","url":"https:\/\/cheerpj.com\/","name":"Run Java in Modern Browsers | No plugin. No local JRE. | CheerpJ","isPartOf":{"@id":"https:\/\/cheerpj.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cheerpj.com\/#primaryimage"},"image":{"@id":"https:\/\/cheerpj.com\/#primaryimage"},"thumbnailUrl":"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png","datePublished":"2023-08-14T14:10:06+00:00","dateModified":"2026-04-13T12:33:12+00:00","description":"CheerpJ is the only solution to run any large-scale, unmodified Java applications, applets, or libraries in modern browsers. No plugin. No local JRE.","breadcrumb":{"@id":"https:\/\/cheerpj.com\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cheerpj.com\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cheerpj.com\/#primaryimage","url":"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png","contentUrl":"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2026\/03\/cheerpj_core_logo_glassfx.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/cheerpj.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cheerpj.com\/"},{"@type":"ListItem","position":2,"name":"CheerpJ"}]},{"@type":"WebSite","@id":"https:\/\/cheerpj.com\/#website","url":"https:\/\/cheerpj.com\/","name":"CheerpJ","description":"The complete Java runtime for modern browsers","publisher":{"@id":"https:\/\/cheerpj.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cheerpj.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/cheerpj.com\/#organization","name":"CheerpJ","url":"https:\/\/cheerpj.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cheerpj.com\/#\/schema\/logo\/image\/","url":"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/CheerpJ_Favicon.png","contentUrl":"https:\/\/cheerpj.com\/wp-content\/uploads\/sites\/3\/2023\/08\/CheerpJ_Favicon.png","width":512,"height":512,"caption":"CheerpJ"},"image":{"@id":"https:\/\/cheerpj.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/pages\/17"}],"collection":[{"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/comments?post=17"}],"version-history":[{"count":328,"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/pages\/17\/revisions"}],"predecessor-version":[{"id":4682,"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/pages\/17\/revisions\/4682"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/media\/4599"}],"wp:attachment":[{"href":"https:\/\/cheerpj.com\/wp-json\/wp\/v2\/media?parent=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}