[英]Learning advanced Java concepts, techniques, frameworks, internals, etc for a .Net dev in the context of Android development?
我在很多不同的環境中專業地使用.Net,因此我很容易閱讀有關新框架,運行時內部結構,高級技術/設計以及使用和理解它們的內容。 在Java世界中,我的經驗有限,而且我現在真的只在Android開發中使用它。 我已經能夠很好地學習這門語言來構建我正在尋找的功能,但是我想要了解更多關於Java人員所同意的良好實踐和設計,無論每個人使用什么樣的現代框架,還有更多關於VM的內部以及我的編程選擇如何影響我的代碼的編譯和執行方式。
我正在尋找的.Net世界的例子
Java世界中有哪些類型的資源,書籍,教程和框架?
還有一本名為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之地,因此您將無法找到整個外部景觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.