gpt4 book ai didi

java - 在 Android 开发环境中为 .Net 开发人员学习高级 Java 概念、技术、框架、内部结构等?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:11 25 4
gpt4 key购买 nike

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

我正在寻找的来自 .Net 世界的示例是

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

在 Java 世界中存在什么样的资源、书籍、教程和框架?

最佳答案

还有一本书叫做《Effective Java》。

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

一般来说,您会发现 Java 并不是一个“只有一个解决方案”的环境。有些问题已经以不同的方式多次解决以达到不同的结果。

这听起来像是“托管可扩展性框架”是 J2EE 服务器概念的微妙复制。 J2EE 在过去十年中至少经历了三次重大修订。如果您想使用 J2EE,请记住它为称为“容器”的包装器中的项目提供服务。这意味着您将不得不调整您的代码以满足容器服务协议(protocol)。这涉及一些前期学习,但是一旦您了解了环境,就不难了。您也不需要使用整个 J2EE 环境,您可以将自己的解决方案嵌入到 J2EE 服务器提供的解决方案中。这是一种选择类型的安排,很少有人强制您。

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

有些人认为最初的 J2EE 服务器限制太多,因此您有一个几乎是 J2EE 服务器,称为 Spring。 J2EE Web 容器很早就出现在 Java 中,因此您可以获得“仅 Web 容器”服务器,例如 Tomcat 或 Jetty。

对于 Java,可能有更多关于垃圾收集器的文档,但您不必处理它的行为。 Java 的垃圾收集器通常表现得更好,并且它不必处理指针支持,这在一定程度上使 .net 的垃圾收集器成为您不时需要关注的东西。

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

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

综上所述,真正的问题在于 Android 使用 Java 语言,但它不运行 JVM。它运行“我不敢相信这不是 Java!” JVM-work alike 对类加载器和类文件格式进行重大更改。这意味着您需要了解 Davlik 虚拟机的运行方式以及与 JVM 的区别。

玩得开心!在 Java 领域有更多您可能已经习惯的选择;但是,许多最流行的 Java 工具已移植到 .net 领域,因此您不会发现整个领域都是外国的。

关于java - 在 Android 开发环境中为 .Net 开发人员学习高级 Java 概念、技术、框架、内部结构等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com