Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Codename One

Write Once Run Anywhere Native Mobile Apps Using Java

Codename One allows Java developers to write their app once and compile it to all mobile devices (iOS, Android etc.). It features a simulator, designer (visual theme/builder) and ports to multiple OS's.

Codename One is a mature open source project and its roots go back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced.

This open source project includes the libraries, native OS ports, resource editor & native VM code for Codename One. It also includes themes and there are separate related projects containing demos (see github links within each demo), skins etc.

Codename One can be extended easily using 3rd party libraries that can include native OS code there is an extensive list of these libraries (cn1libs) here.

You can learn more about Codename One and its capabilities at the main site and you can read additional documentation here.

You can also check out this introduction to Codename One video:

Introducing Codename One

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM just generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

More traditional compilers fall flat in these cases, furthermore they can't use Apple's native tools to their full extent e.g. profilers etc.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at [StackOverflow when you tag using codenameone](http://stackoverflow.com/tags/codenameone), you can ask anything there and we try to be pretty responsive. [The StackOverflow link](http://stackoverflow.com/tags/codenameone) also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

About

Forked CN1 repo to submit pull requests

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages