我在许多不同的环境中专业地使用.Net,所以我很容易阅读新的框架、运行时内部程序、高级技术/设计,并让它们使用和理解它们。在Java世界中,我的经验有限,目前我只在Android开发中使用它。我已经很好地学习了这门语言来构建我想要的功能,但我想了解更多关于Java人一致认同的良好实践和设计的知识,不管他们使用什么现代框架,更多地了解VM的内部结构,以及我的编程选择如何影响我的代码的编译和执行。
我正在寻找的.Net世界的例子是
scenarios.
的交互的文档。
在Java世界中,存在着什么样的资源、书籍、教程和框架?
发布于 2010-06-29 13:28:46
还有一本书叫做“有效Java”。
Java中有不同类型的数据绑定。最先进的是对象模型,如JDO、JPA等。它们基本上使用一个映射将数据从对象移动到表,而且您永远不会直接接触数据库,因为数据库都是透明处理的。另一个是典型的“对象绑定到一行”技术,JDO就是一个很好的例子。最后,直接处理数据库,您可以使用JDBC。使用最适合您的代码逻辑的工具。
通常,您会发现使用Java并不是一个“只有一个解决方案”的环境。其中一些问题以不同的方式得到了多次解决,取得了不同的效果。
听起来,“托管扩展框架”是J2EE服务器概念的一个微妙的副本。在过去的十年里,J2EE至少经历了三次重大修正。如果要使用J2EE,请记住,它为包装器中称为“容器”的项目提供服务。这意味着您必须调整代码以满足容器服务协议。这里有一些预先学习,但一旦你了解了环境,这并不难。您也不需要使用整个J2EE环境,您可以将自己的解决方案嵌入到J2EE服务器提供的解决方案中。这是一个挑选类型的安排,珍贵的小东西是强加在你身上的。
J2EE还描述了许多可能独立于J2EE服务器的企业技术,因此,如果您不喜欢J2EE环境(无论出于什么原因),您可以始终包括JAR文件,并在没有J2EE服务器的情况下使用库。
有些人认为最初的J2EE服务器限制太大,所以您有一个名为Spring的几乎J2EE服务器。Java容器在J2EE中很早就出现了,所以您可以获得“仅限于web容器”的服务器,比如Tomcat或Jetty。
使用Java,可能有更多关于垃圾收集器的文档,但是您必须少处理它的行为。Java的垃圾收集器通常表现得更好,而且它不需要处理指针支持,这部分地使.NET的垃圾收集器成为您不时需要处理的东西。
尽管如此,不管你想要什么都可以。如果逻辑将项作为缓存存储在HashMap中,请考虑使用SoftReferences,这在垃圾收集中不会被视为引用。Java没有引用计数,所以不要担心循环引用,您可以取消引用循环,它们都将被收集起来。
GC根据内存可用性使用更改的算法。在内存利用率较低的情况下,它将将活动对象复制到新页并释放旧页(因此,压缩几乎是免费的)。在内存较高的情况下,它使用标记、扫描和紧凑循环,这是典型的其他垃圾收集器。它还将内存分为三个代段,通过检查对象在当前运行程序中的使用频率来排序对象。
尽管如此,真正的问题在于Android使用Java语言,但它不运行JVM。它运行了一个“我无法相信-它不是-Java!”JVM-类似于对类加载器和类文件格式进行重大更改的工作方式。这意味着您需要了解Davlik虚拟机是如何运行并与JVM不同的。
玩得开心!在Java中,您可能已经习惯了更多的选择;但是,许多最流行的Java工具已经移植到.net land,所以您不会发现整个场景都是国外的。
https://stackoverflow.com/questions/3140743
复制相似问题