til*_*ner 64 java apache android java-8
我们大多数人现在已经听说过Java 8将带来的酷炫功能,但Android不会支持它.这是因为Google使用Apache Harmony for Android.这就是让我们(Android应用程序开发人员)改进我们的代码与lambdas,接口中的默认实现,切换字符串等等.当然,我们会处理一段时间,但如果我们在应用程序中使用的某些库开始使用Java 8功能呢?据我所知,这不起作用(如果错误,请纠正我).这会在Standard -Java和Android -Java 之间产生不兼容性.它不可能是谷歌的意图,或者至少我不能想到一个公司,开发一个广泛采用的操作系统,不会永远留在旧的 Java版本的原因.
问题:
Ste*_*n C 55
他们为什么使用Apache Harmony?
因为Sun拒绝以可接受的条款向Google提供Sun(现在的Oracle)Java许可.谷歌和Sun谈判,但他们最终放弃了交易.
Nitpick:事实上,Android库并不是Apache Harmony.他们最初是以和谐为基础的,但这两个代码库已经分道扬.. 此外,Apache Harmony项目于2011年11月正式"退役".
为什么他们不能采用更新版本的java?
首先,Android不运行Java(tm).它在具有不同指令集的虚拟机上运行与Java相同的语言,其类库在功能上等同于Java类库的子集(+特定于Android的库).
从技术角度来看,他们可以......但只有在为Android平台实施Java 7和Java 8语言功能,库功能等方面付出了大量工作.
更新 - 从Android 19(KitKat)和Eclipse ADT 22.6开始,Android现在支持Java 7语言扩展; 请参阅http://tools.android.com/recent/eclipseadt226preview
如果他们不想要Oracle的Java,他们为什么不能使用OpenJDK的子集?
我认为切换到OpenJDK不会改变任何东西.Oracle Java和OpenJDK的相同度为99.9%.
无论如何,可能存在许可和相关的法律问题.(为了感受到这一点,请阅读甲骨文与谷歌的诉讼......这将具有吸引力.)
更有可能的是,谷歌没有看到足够的商业价值来抵消改变所需的(大规模)努力,以及它对Android生态系统造成的破坏......它已经受到碎片问题的困扰.
您是否知道有任何更新已用Java版本的计划?
不,我没有.这并不意味着没有计划,但如果有计划,它们就不公开.
您知道在当前Android系统上使用Java 8类的任何方法吗?
你可以移植它们.或者至少,您可以尝试移植它们.(某些Java API与JVM的本机代码端有密切关系......这可能会导致移植问题.)
Ido*_*lon 12
您知道在当前Android系统上使用Java 8类的任何方法吗?
有一些库反向部署Java 8 API(请参阅下面的更新部分,了解最新Android版本中对这些API的本机支持):
java.util.function(java.util.stream7)的用户的Java 8 (功能接口)和(流)API的java.util.concurrent后端,补充了Java 6中不存在的选定添加.您还可以使用retrolambda(连同gradle这个-retrolambda插件)利用在Android开发lambda表达式.
UPDATE
但是,从Android Studio 2.4 Preview 4(结合Android插件2.4.0-alpha4)开始,内置支持一些Java 8语言功能:
上述功能可用于任何Android API级别.
从API级别24开始,我们还可以使用默认和静态接口方法,以及以下Java 8 API:
java.util.streamjava.util.functionjava.lang.FunctionalInterfaceAPI级别26(Android O预览版)增加了java.timeAPI支持.
| 归档时间: |
|
| 查看次数: |
13513 次 |
| 最近记录: |