JUniversal:基于 Java 新式跨平台移动应用方法

从头开始为各个移动平台编写单独的应用程序比较昂贵。如果您想要为多个平台创建应用,或者扩展现有应用到所面向的市场上,最有效的方法就是跨平台重复利用您已有的代码。如果再此基础上保留原生用户界面的效果,那就更完美了。

当然,跨平台使用代码肯定是理想的解决方案,但问题是如何实现?当今,什么最吸引致力于构建本机应用程序的 Android 和 iOS 开发者呢?

针对该需求,已经产生了包括 Xamarin 和 Cordova 在内的多种方案。我想特别提出另一种工具—JUniversal,该工具允许您使用 Java 编写可共享的跨平台代码。

概述

JUniversal 的构想来自诺基亚的几个开发者,他们在 Java 和构建跨平台应用方面具备相当专业的技能。JUniversal 使翻译源代码的工作变得简洁优雅,且可在多种平台中使用。该工具允许您使用 Java 自由编写共享代码,并将其翻译成 C#(现已可用)或 C++/Objective C++(即将可用)。您还可以将JUniversal 与 Google 的 j2objc 翻译器结合,使 Java 翻译成 Objective-C,供开发 iOS 使用。

除了源翻译功能,JUniversal 还提供一组称为 JSimple 的库,该库为多数移动应用程序提供支持跨平台的(非 UI)API 版本。这些应用程序组件如下:

  • OAuth (based on Scribe)
  • JSON
  • Unit testing (JUnit)
  • File & network I/O platform wrappers
  • Collections—HashMap, ArrayList, etc. (based on JDK/Harmony)
  • Logging (based of SLF4J/Logback)
  • About 20K lines currently

为什么需要源码翻译?

JUniversal 的主要设计目的是为了保留评论和设置格式,生成的翻译源可读性较高,就像手工编写的。因此,调试程序、探查器和异常堆栈跟踪等工具都与手工编写的源代码工具功能一样,翻译的源代码可与本机代码无缝结合。语言兼容性较好。

在跨平台技术这一层面上,JUniversal 因使用原生平台编程语言(通过语言翻译)、本机编译器、本机调试程序和本机 UI 设计工具,因而被评为最轻量和最接近原生环境的工具。至于用户界面,目的则是通过手工编写原生代码而提供最佳用户体验。

JUniversal 是免费的

下面是 JUniversal 架构的简易图:

在微软开放技术,我们非常欢迎这类的开发爱好者利用业余时间完成的项目,也希望 JUniversal 团队能将这一项目坚持下去。绝对是精品!

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-10-30 13:08:12

JUniversal:基于 Java 新式跨平台移动应用方法的相关文章

基于java中正则操作的方法总结_java

正则表达式在处理字符串的效率上是相当高的 关于正则表达式的使用,更多的是自己的经验,有兴趣可以参阅相关书籍 这里主要写一下java中的正则操作方法 实例1:匹配 复制代码 代码如下: import java.util.Scanner; class Demo {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        //获取输入        System.out

基于Java内存溢出的解决方法详解_java

一.内存溢出类型1.java.lang.OutOfMemoryError: PermGen spaceJVM管理两种类型的内存,堆和非堆.堆是给开发人员用的上面说的就是,是在JVM启动时创建:非堆是留给JVM自己用的,用来存放类的信息的.它和堆不同,运行期内GC不会释放空间.如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改

java基于odbc连接oracle的实现方法_java

本文实例讲述了java基于odbc连接oracle的实现方法.分享给大家供大家参考,具体如下: 1.加载 oracle驱动 oracle.jdbc.driver.OracleDriver 2.建立到给定数据库 URL 的连接 jdbc:oracle:thin:@localhost:1521:orcl 3.默认的用户名是system,密码是自己设定的,不能用sys或者是sysdba,这个只是角色. public void testOracle() { try { Class.forName("or

基于java中byte数组与int类型的转换(两种方法)_java

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf

Java基于Socket的文件传输实现方法_java

本文实例讲述了Java基于Socket的文件传输实现方法.分享给大家供大家参考,具体如下: 1. Java代码如下: package sterning; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.Ser

Java Web开发之基于Session的购物商店实现方法_java

本文实例讲述了Java Web开发之基于Session的购物商店实现方法.分享给大家供大家参考,具体如下: package cn.com.shopping; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.s

Java基于IO流读取文件的方法_java

本文实例讲述了Java基于IO流读取文件的方法.分享给大家供大家参考,具体如下: public static void readFile(){ String pathString = TEST.class.getResource("/simu").getFile(); try { pathString = URLDecoder.decode(pathString, "utf-8"); } catch (UnsupportedEncodingException e1)

用RMI开发基于Java的企业分布式应用

摘 要 由于Java具有跨平台.代码可移植性.安全高效等广泛而强大的功能,因而在开发网络分布式应用的时候,可以用它自身的机制实现分布式计算,一种基于Java的远程方法调用(RMI)为我们开发企业分布式应用提供了行之有效的解决方案. 关键词 Java RMI 企业分布式应用 概述 随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息.对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流.同时,由于各单位.各部门之间的现存的计算机网络硬件设备与操作系统千差

基于java 的OA 工作流

问题描述 寻求基于java的OA工作流 解决方案 解决方案二:用jbpm解决方案三:可以用泛微的工作流,个人觉得比较好.解决方案四:Willow由HuihooPower开发详细可到其中文主页查看.更多Willow信息OpenWFEOpenWFE是一个开放源码的Java工作流引擎.它是一个完整的业务处理管理套件:一个引擎,一个工作列表,一个Web界面和一个反应器(存放自动代理).它可以可以跟你的程序很好的给合.更多OpenWFE信息jBpmjBpm是一个灵活可扩展的工作流管理系统.作为jBpm运行