在Android开发环境中学习.Net开发的高级Java概念,技术,框架,内部等?

Ric*_*ich 3 .net java

我在很多不同的环境中专业地使用.Net,因此我很容易阅读有关新框架,运行时内部结构,高级技术/设计以及使用和理解它们的内容.在Java世界中,我的经验有限,而且我现在真的只在Android开发中使用它.我已经能够很好地学习这门语言来构建我正在寻找的功能,但是我想要了解更多关于Java人员所同意的良好实践和设计,无论每个人使用什么样的现代框架,还有更多关于VM的内部以及我的编程选择如何影响我的代码的编译和执行方式.

我正在寻找的.Net世界的例子

  1. 有一系列名为Effective C#的书籍,概述了每本书对编程风格进行微妙更改的50个项目,以及它们如何在特定场景中使您的代码更清晰,更高效.
  2. 实体框架是Microsoft的一个框架,用于直接连接到数据源并自动构建可配置的实体模型
  3. Managed Extensibility Framework是Microsoft的一个新框架,用于通过在两端公开扩展点来编写可扩展应用程序和可插入库
  4. 互联网上有关于.Net垃圾收集器如何工作以及您的编程选择如何影响它与您的应用程序交互的文档

Java世界中有哪些类型的资源,书籍,教程和框架?

Edw*_*uck 5

还有一本名为Effective Java的书.

Java中有不同类别的数据绑定.最先进的是Object模型,如JDO,JPA等.它们基本上使用映射将数据从对象移动到表,并且您永远不会直接触摸数据库,因为它们都是透明处理的.另一种是典型的"对象绑定行"技术,其中JDO就是一个很好的例子.最后,直接处理数据库,您使用JDBC.使用最适合您的代码逻辑的工具.

通常,您会发现使用Java时,它不是"仅一个解决方案"环境.一些问题已经以不同的方式多次解决以实现不同的结果.

听起来像"Managed Extensibility Framework"是J2EE服务器概念的一个微妙副本.J2EE在过去十年中经历了至少三次重大修订.如果要使用J2EE,请记住它为名为"containers"的包装器中的项提供服务.这意味着您必须调整代码以满足容器服务协议.有一些前期学习涉及,但一旦你了解环境,这并不难.您也不需要使用整个J2EE环境,您可以将自己的解决方案嵌入到J2EE服务器提供的解决方案中.这是一个挑选类型的安排,珍贵的小强迫你.

J2EE还描述了许多可能独立于J2EE服务器的企业技术,因此如果您不喜欢J2EE环境(无论出于何种原因),您始终可以包含JAR文件并使用不带J2EE服务器的库.

有些人认为最初的J2EE服务器限制性太强,所以你有一个叫做Spring的差不多J2EE服务器.J2EE Web容器很早就在Java中出现了,因此您可以获得"仅限Web容器"服务器,如Tomcat或Jetty.

使用Java,可能还有更多关于垃圾收集器的文档,但是你必须更少地处理它的行为.Java的垃圾收集器通常表现得更好,而且它不必处理指针支持,它部分地使.net的垃圾收集器不时需要倾向于它.

也就是说,取消引用您想要收集的任何内容.如果逻辑将HashMap中的项目存储为缓存,请考虑使用SoftReferences,它不会被视为垃圾收集中的引用.Java不引用计数,所以不要担心循环引用,你可以取消引用引用循环,它们都将被收集.

GC使用的算法根据内存可用性而变化.在低内存利用率情况下,它会将实时对象复制到新页面并释放旧页面(因此几乎可以免费获得压缩.在更高内存的情况下,它使用典型的其他垃圾收集器的标记,扫描和紧凑循环.它还将它的内存分为三代段,以按照当前运行程序中应检查的频率对对象进行排序.

所有这些都说,真正的踢球者是Android使用Java语言,但它不运行JVM.它运行着"我不敢相信它不是Java!" JVM工作类似于对类加载器和类文件格式进行重大更改.这意味着您需要了解Davlik虚拟机的运行方式以及与JVM的不同之处.

玩得开心!你可能已经习惯了Java领域的更多选择; 然而,许多最流行的Java工具已被移植到.net土地,因此您将无法找到整个外部景观.