Scala 2.10 字节码将不再兼容 Java 1.5

fmms 12年前
     <p style="text-align:left;">来自 Scala 开发团队讨论的<a href="/misc/goto?guid=4958334591386402715" target="_blank">结果</a>称从 Scala 2.10 版本开始,字节码将不再兼任 Java 1.5 。</p>    <p style="text-align:left;">做出此决定是基于以下几方面考虑的:</p>    <ul>     <li>从 09年10月开始 Java 5 已经结束生命周期,官方不再支持<span style="text-align:left;"> <br /> </span></li>     <li><span style="text-align:left;">Java 1.5 的并发限制导致 Scala 并发库的连锁反应</span></li>     <li><span style="text-align:left;">加大了 Scala 构建和测试套件的复杂度</span></li>     <li><span style="text-align:left;">那些在使用 Java 5 的公司看起来不会考虑升级到 Scala 2.10 版本</span></li>    </ul>    <p>看起来似乎很符合逻辑,因为 Java 6 已经成为大多数企业的选择。但此举可能有相当一部分 Android 开发相关的问题,在 Android 2.2 以及更低版本的应用开发可能就存在兼容性的问题了。</p>    <p><img style="width:501px;height:72px;" alt="Scala 2.10 字节码将不再兼容 Java 1.5" src="https://simg.open-open.com/show/3323746f4f11d379f2c3c500207b2c9d.png" width="646" height="93" /></p>    <p> </p>    <p><a href="/misc/goto?guid=4958188765916438898" target="_blank">Scala</a>是一门现代的多范式编程语言,志在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性。</p>    <ul>     <li><strong>Scala是面向对象的</strong>:Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。 </li>     <li><strong>Scala是函数式的</strong>: Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher- order)函数、允许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中 都被使用。 </li>     <li><strong>Scala是静态类型的</strong>:Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用。 </li>     <li><strong>Scala是可扩展的</strong>:Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构:      <ul>       <li>任何方式可以被用作中缀(infix)或后缀(postfix)操作符 </li>       <li>闭包按照所期望的类型(目标类型)自动地被构造</li>      </ul> 两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具。 </li>     <li><strong>Scala可与Java和.NET进行互操作</strong>:Scala 设计时就考虑了与流行编程环境良好交互,如Java 2运行时环境(JRE)和 .NET框架(CLR)。特别是与主流面向对象语言,如Java和C#尽量无缝交互。Scala有像Java和C#一样的编译模型(独立编译,动态装载 类),允许访问成千上万的高质量类库。</li>    </ul>    <p></p>