2010-06-29 1 views
3

.Net은 전문적인 많은 컨텍스트에서 작업하기 때문에 새 프레임 워크, 런타임 내부, 고급 기술/디자인에 대해 읽고 사용하고 이해하는 것이 쉽습니다. 자바 세계에서 나는 제한된 경험을 가지고 있으며, 요즘 안드로이드 개발을 위해서만이 작업을하고 있습니다. 필자가 찾고있는 기능을 구현할 수있을 정도로 언어를 배울 수 있었지만, 모든 사람들이 사용하고있는 현대적인 프레임 워크가 무엇이든 관계없이 Java 관할 사람들이 동의하는 좋은 관행과 디자인에 대해 더 많이 배우고 싶습니다. VM의 내부 구조 및 내 프로그래밍 선택이 내 코드가 컴파일되고 실행되는 방법에 영향을 미칩니다. 내가 무엇을 찾고의 닷넷 세계에서Android 개발의 맥락에서 .Net 개발자를위한 고급 Java 개념, 기술, 프레임 워크, 내부 용 등을 학습 하시겠습니까?

예는

가 프로그래밍 스타일에 미묘한 변화의 책 당 50 개 항목을 설명 효과적인 C 번호라는 책의 시리즈 그리고 그들이 만드는 방법
  1. 특정 시나리오에서 코드 정리 및 성능 향상
  2. Entity Framework는 데이터 원본에 직접 연결하고 구성 가능한 엔터티 모델을 자동으로 구성하기위한 프레임 워크입니다
  3. Managed Extensibility Framework는 확장 점을 노출하여 확장 가능한 응용 프로그램 및 플러그 가능한 라이브러리를 작성하는 Microsoft의 새로운 프레임 워크입니다. 문서의 풍부한 맛에 대해 인터넷에 있습니다
  4. 모두 프로그래밍의 선택이 당신의 응용 프로그램과 상호 작용하는 방식에 어떻게 영향을 미치는지 닷넷 가비지 컬렉터의 작동 방식 종료 자원, 책, 자습서 및 프레임 워크의 종류와 같은 존재 무엇

이 자바 wo에서 rld?

+0

귀하의 질문과 제목이 일치하지 않습니다. Java에서 사용할 리소스를 묻는 것처럼 보이지만 Windows CE와 Android의 리소스를 비교하면 더 많은 비교가 가능합니다. 가능한 많은 것들이 있습니다. 안드로이드에서 사용할 수없는 자바 용 옵션이있는 것처럼 Windows CE로는 할 수없는 .NET으로 할 수 있습니다. –

+0

그건 내가 묻는 것이 전혀 아닙니다. 내가하는 유일한 Java 프로그래밍이 Android 용이라면 Java 지식으로 더 나아 가기 위해 내가 할 수있는 일을 묻고 있습니다. Windows에서 모바일 기능이 거의 없으므로 모바일과 모바일 간의 문제는 아닙니다. 나는 C#을 destkop, 웹, 서버, WPF, Silverlight, ASP.Net, 당신의 이름으로 사용합니다 ... 그래서 새로운 프레임 워크 등을 유지할 수있는 많은 기회를 갖게되었습니다. 모범 사례 등을 배우십시오. 내 질문은 - 어떻게 안드로이드 개발의 컨텍스트에서만 그것을 사용하여 Java에서 해당 수준에 올라갈 수 있습니다. – Rich

답변

4

Effective Java라는 책이 있습니다.

Java에서는 데이터 바인딩의 카테고리가 다릅니다. 가장 진보 된 모델은 JDO, JPA 등과 같은 객체 모델입니다. 객체는 기본적으로 객체의지도를 사용하여 테이블로 이동하며, 투명하게 처리되므로 데이터베이스를 직접 만질 수 없습니다. 또 하나의 예는 JDO가 좋은 예인 일반적인 "객체가 행에 바인딩"하는 기법입니다. 마지막으로 JDBC를 사용하는 데이터베이스를 직접 처리합니다. 코드 논리에 가장 적합한 도구를 사용하십시오.

일반적으로 Java를 사용하면 "한 가지 해결책"환경이 아닙니다. 문제 중 일부는 다른 결과를 얻기 위해 여러 방법으로 여러 번 해결되었습니다.

"Managed Extensibility Framework"는 J2EE 서버 개념의 미묘한 사본처럼 들립니다. J2EE는 지난 10 년 동안 적어도 세 가지 주요 개정을 겪었습니다. J2EE를 사용하려면 "컨테이너"라고하는 래퍼 내의 항목에 서비스를 제공해야합니다. 즉, 컨테이너 서비스 계약을 충족시키기 위해 코드를 수정해야합니다. 약간의 선행 학습이 있지만 일단 환경을 이해하면 어렵지 않습니다. 또한 전체 J2EE 환경을 사용할 필요가 없으며 J2EE 서버에서 제공하는 솔루션에 자체 솔루션을 내장 할 수 있습니다. 그것은 선택이고 타입 정렬을 선택합니다. 귀중한 작은 것이 당신에게 강제됩니다.

J2EE는 J2EE 서버와 독립적으로 살아갈 수있는 많은 기업 기술을 설명하기 때문에 J2EE 환경이 마음에 들지 않는다면 (어떤 이유로) 항상 JAR 파일을 포함하고 J2EE없이 라이브러리를 사용할 수 있습니다 섬기는 사람.

초기 J2EE 서버가 너무 제한적이어서 Spring이라는 거의 J2EE 서버를 사용하기로 결정한 사람들이 있습니다.J2EE 웹 컨테이너는 Java 초기 장면에서 매우 일찍 도착 했으므로 Tomcat 또는 Jetty와 같은 "웹 컨테이너 전용"서버를 사용할 수 있습니다.

Java에서는 가비지 컬렉터에 대한 문서가 더 많을 수 있지만 그 행동을 덜 처리해야합니다. Java의 가비지 컬렉터는 일반적으로 훨씬 더 잘 동작하며, 때때로 부분적으로 .net의 가비지 컬렉터를 만드는 경향이있는 포인터 지원을 처리 할 필요가 없습니다.

그건 그렇고, 당신이 수집하기를 원하는 것을 비 참조하십시오. 논리가 HashMap의 항목을 캐시로 저장하는 경우 가비지 콜렉션에서 참조로 간주되지 않는 SoftReferences 사용을 고려하십시오. Java는 개수를 참조하지 않으므로 순환 참조에 대해 걱정할 필요가 없습니다. 순환 참조를 참조 해제 할 수 있으며 순환 참조가 모두 수집됩니다.

GC가 사용하는 알고리즘은 메모리 가용성에 따라 변경됩니다. 메모리 사용량이 적은 상황에서는 새로운 페이지로 라이브 객체를 복사하고 이전 페이지를 비울 것입니다 (압축은 거의 무료입니다.) 메모리가 많은 경우에는 다른 가비지 컬렉터의 전형적인 마크, 스윕 및 컴팩트 사이클을 사용합니다. 또한 현재 실행중인 프로그램에서 사용량을 확인해야하는 빈도로 객체를 주문하는 3 세대 섹션에서 메모리를 스테이지합니다.

모두가 말하듯이 Android는 Java 언어를 사용하지만 실제로는 그렇지 않습니다. JVM을 실행하면 클래스 로더와 클래스 파일 형식을 크게 변경하는 JVM 작동 방식과 비슷합니다. 즉, Davlik 가상 머신이 작동하고 JVM과 다릅니다.

재미 있어요! 당신이 아마 익숙한 자바 땅에서 더 많은 선택입니다; 그러나 가장 많이 사용되는 Java 도구 중 많은 부분이 .NET 토양으로 포팅되어 있으므로 외국인 전체 풍경을 찾을 수 없습니다.

+0

니스 대답, 제목을 보면, 이것은 안드로이드 개발에 대한 참조입니다, 나는 믿습니다. –

+0

사실, 안드로이드 플랫폼과 관련되어 있습니다. 그러나 포스터에는 Android 플랫폼에 적용되지 않는 많은 기술이 포함되어 있습니다. Android 용 "Managed Extensibility Framework"또는 Android 전용 "Entity Framework"는 절대로 존재하지 않습니다. 안드로이드는 자바를 초점 언어로 사용하지만 약간 다른 방식으로 코드를 실행하기 때문에 어떤면에서는 자바의 질문에 대답하고 Andriod의 차이점을 논의해야합니다. –

+0

굉장한 ... 정확하게 내가 찾고 있었던 종류의 대답. 시간을내어 주셔서 감사합니다. Android 이외의 Java 개발자를 탐구 할 필요가 있다는 것을 알고 싶지만 모바일 외부에서 수행하는 모든 작업은 여전히 ​​거의 100 % .Net입니다. Effective Java book을 살펴 보겠습니다. Java에서 동시 프로그래밍 (Concurrent Programming)을 구입하여 스레드와 동기화가 낮은 수준에서 어떻게 작동 하는지를 설명하기를 희망합니다. – Rich