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

简介:

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

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

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

screenshot

概述

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 架构的简易图:

screenshot

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

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

相关文章
|
22天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
57 3
|
13天前
|
Java
判断不为空和不为空串的方法java
判断不为空和不为空串的方法java
|
16天前
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
|
3天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
|
3天前
|
存储 Java API
掌握8条方法设计规则,设计优雅健壮的Java方法
掌握8条方法设计规则,设计优雅健壮的Java方法
|
4天前
|
Java C语言
详解java方法与递归
详解java方法与递归
10 3
|
4天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
9 0
|
5天前
|
Java
Java一分钟之-方法定义与调用基础
【5月更文挑战第8天】本文介绍了Java编程中的方法定义和调用,包括基本结构、常见问题和避免策略。方法定义涉及返回类型、参数列表和方法体,易错点有返回类型不匹配、参数错误和忘记返回值。在方法调用时,要注意参数传递、静态与非静态方法的区分,以及重载方法的调用。避免错误的策略包括明确返回类型、参数校验、理解值传递、区分静态和非静态方法以及合理利用重载。通过学习和实践,可以提升编写清晰、可维护代码的能力。
13 0
|
7天前
|
搜索推荐 Java Shell
8大Java排序方法(由简入繁),有代码详解和原理指导
8大Java排序方法(由简入繁),有代码详解和原理指导
31 0
|
13天前
|
Java API
【亮剑】三种有效的方法来删除List中的重复元素Java的List
【4月更文挑战第30天】本文介绍了三种Java中删除List重复元素的方法:1) 使用HashSet,借助其不允许重复值的特性;2) 利用Java 8 Stream API的distinct()方法;3) 对自定义对象重写equals()和hashCode()。每种方法都附带了代码示例,帮助理解和应用。