2008-09-19 5 views
7

저는 다른 Java 프로그래머가 언어에서 가장 좋아하는 부분이 무엇인지, 왜 그렇게 느껴지는지, 그리고 다른 프로그래머가이 언어에 대해 자세히 알고 싶어하는 이유를 알고 싶습니다. 나는 단순성, 성능 등과 같은 이유를 찾고있다. 고마워.자바 API의 가장 좋아하는 영역은 무엇입니까?

답변

22

내가 가장 좋아하는 Java API는 컬렉션 프레임 워크입니다. 나는 내 자신의 구현을 롤링하는 대신에 항상 그것을 사용하고 있으며, 사용하기가 매우 즐겁고 간단하다. 고성능 데이터 구조 및 알고리즘에 대한 여러 가지 유용한 상호 운용성 구현과 함께 주변에 추가 기능을 래핑하는 몇 가지 편리한 방법으로 구성되어 있습니다.

조쉬 블로흐 튜토리얼은 여기에서 찾을 수 있습니다 :

+0

나는 동의하고 generics-based 유형 만 더 나아진다. –

1

java.util의 아주 폴더의 유틸리티입니다. 왜?

  • 컬렉션. 그들 중 많은!
  • 날짜 및 시간 수업
  • 텍스트 스캐너
  • 의존성 주입 유틸리티
  • 타이머 스레드
  • 난수 (자바 6 이후)
  • 관찰자 패턴은
  • 자바 속성
있다
+0

"Dependency Injection"에 대해 자세히 설명해 주시겠습니까? – OscarRyz

+0

Date API는 많이 필요합니다. 다음에 날짜로 작업해야하는데 Joda Time을 사용합니다. –

10

내가 가장 좋아하는 부분은 java.lang입니다. 이 클래스는 String으로, 문자 배열을 쉽게 조작 할 수 있습니다. 좋은 Java 코드를 작성하는 데 관심이있는 프로그래머라면 누구나 그것을 확인해야합니다.

+1

방금 ​​아침에 만들었습니다! – RichH

4

확실히 컬렉션 프레임 워크입니다. 그것은 당신이 서버 쪽 Java 또는 클라이언트 측, 그래픽 또는하지 여부에 상관없이 항상 사용됩니다. 사용하기 쉽습니다. 대부분의 데이터 구조 클래스는 비 제네릭 버전과 제네릭 버전 (두 번째 코드를 사용하는 것이 가장 좋지만 첫 번째 코드를 많이 사용하는 레거시 코드가 있음)을 모두 가지고 있지만 클래스 매개 변수 이외의 API 측면에서 보면 거의 동일합니다. .NET에서 두 버전은 서로 다른 이름/API를 가질 수 있으며 매우 혼란 스러울 수 있습니다. 또한 자바 컬렉션 프레임 워크가 인스턴스 메소드가 아닌 정적 메소드 (예 : Collections.sort (collectionVar))로 알고리즘을 갖고있는 것을 좋아합니다. .NET에서는 인스턴스 메소드를 사용하는데 어떤 이유로 든 모든 데이터 구조에 정렬이있는 것은 아닙니다 ... Collections Framework도 매우 풍부하며 단순하고 특수한 데이터 구조 (예 : 삽입 순서를 유지하는 LinkedHashMap)를 모두 찾을 수 있습니다.

내가 들었던 한 가지 단점은 프레임 워크가 잘 수행되지 않고 일부 사람들이 자체적으로 작성한다는 것입니다. 나는 성능에 중대한 문제를 다루지 않기 때문에 그것을 검증 할 수 없다.

1

java.util.jar - 응용 프로그램 플러그인의 클래스 로더로 .jar 파일을로드하는 데 도움이됩니다! 나는 그것을 좋아한다.

1

을 java.util.regex의

이 내가 없이는 살 수없는 다른 패키지가 있지만 정규식 패키지는 "자바에 큰 추가"의 상위 계층에 있어야한다 - 확실히 바로이 컬렉션에 .

1

나는 Reflection 코멘트에 동의합니다. Java API의 가장 유용한/강력한 부분입니다.

3

스트림. Java의 스트림은 C++ (의견)의 대응 물보다 훨씬 쉽게 파악하고 구현할 수 있으며 API와 함께 제공되는 스트림의 이름을 기반으로 스트림이 당신을 위해 무엇을 할 것인지를 쉽게 알 수 있습니다.

1

필자의 자바 시대를 생각해 보면 가장 재미있는 API는 java.util.concurrent으로, 병렬 처리를 위해 잘 고려되고 사용하기 쉬운 빌딩 블록을 제공하기 때문에 간단합니다.

9

java.util.concurrent은 평생 동안 중요합니다. 우리는 꽤 많은 멀티 코어 프로그래밍을하고 오래된 스타일의 쓰레드를 사용하여 모든 작업을 구현하려고한다는 생각이 나를 아프게합니다.

동시성 패키지가 실제로 우리 삶을 편하게 만드는 좋은 예는 그것이 제공하는 특수화 된 데이터 구조의 풀입니다. 내 개인적으로는 CopyOnWriteArrayList입니다. 우리는 디스플레이 작업이 데이터 캐시에서 읽어 와서 화면을 업데이트하는 상황에서 다른 작업이 네트워크에서 정보를 가져 와서 캐시를 업데이트하는 경우에 사용합니다. 일반적으로 이것은 충돌에 대한 초대장, ConcurrentModificationExceptions 및 이와 유사한 공포입니다. 쓰기 작업은 CopyOnWriteArrayList를 사용하여 데이터를 추가해야하는 경우 데이터의 새 사본을 작성하므로 판독기에 항상 올바른 (유효하지 않을 수도 있음) 데이터 세트가 표시되도록합니다. 이것은 일반적으로 너무 비용이 많이 드는,하지만 탐색 작업이 훨씬 가 돌연변이를 능가 할 때 대안 보다 더 효율적으로 할 수 있으며, 유용

javadoc에 적혀

, 때 수 없거나 원하지 않는 으로 트래버스를 동기화하지만 동시 스레드 간의 간섭을 방지하려면 이 필요합니다.

Java는 일반적으로이 문제를 해결하기 위해 소개하는 버그 전체를 제거하므로 해결해야 할 실제 문제에 집중할 수 있습니다.

0

InheritableThreadLocal 모든 방법 !!! 난이도가 높은 코드와 줄을 감아 서 쓰다듬을 기회가 너무 많아서 절대로 벗어날 수없는 것 같습니다.

2

지금까지 java.util.regex API 패키지는 다양한 목적으로 문자열을 검색하고 활용할 때 매우 많은 경우에 바퀴를 다시 만들 필요가 없기 때문에 가장 좋아합니다.

관련 문제