>  기사  >  Java  >  Java 사용 경험

Java 사용 경험

零下一度
零下一度원래의
2017-06-28 09:09:001560검색

이 글을 쓰는 목적은 주로 몇 가지 기본 Java 지식 포인트와 관련하여 수년간 Java를 사용하면서 얻은 경험을 요약하는 것입니다. 따라서 이제 막 Java를 시작한 프로그래머와 입문을 계획하는 사람들과도 공유하고 싶습니다. Java 개발. 이 업계에 처음 입문하는 분들에게 Java를 더 잘 배우고 사용할 수 있도록 경험을 제공할 수 있기를 바랍니다.
 이번에 소개한 주요 내용은 J2SE 관련 내용입니다. 이외에도 J2EE 관련 내용 및 Java의 다양한 프레임워크에 대해서는 앞으로 소개할 예정입니다.
수년간 Java를 개발하고 Java 개발자를 인터뷰한 경험을 바탕으로 J2SE에서 가장 중요한 것은 다음 콘텐츠를 마스터하는 것이라고 생각합니다.

1. JVM 관련(버전별 기능 포함)

Java를 처음 접하는 분들은 JVM 관련 지식에 깊은 이해가 필요하지 않고, 내부 개념만 간단히 이해하시면 됩니다. 하지만 Java 경력이 3년 이상인 시니어 개발자에게 JVM을 모른다는 것은 거의 용납되지 않습니다.
 JVM은 Java를 실행하는 기본입니다. JVM에 대해 전혀 모르는 사람이 Java 언어를 완벽하게 이해할 수 있다는 것은 믿기 어렵습니다. Java 경력 3년 이상의 개발자를 인터뷰할 때 JVM은 거의 필수 질문입니다. 물론, JVM만이 기술 역량의 질을 결정하는 면접 질문은 아니지만, 자바 개발 역량의 수준을 입증할 수는 있습니다.
JVM 카테고리에서 꼭 익혀야 할 지식은
JVM 메모리 모델 및 구조
GC 원리, 성능 튜닝
튜닝: 스레드 덤프, 메모리 구조 분석
클래스 바이너리 바이트코드 구조, 클래스 로더 시스템, 클래스 로딩 과정, 인스턴스 생성 과정
메소드 실행 과정
주요 Java 버전 업데이트에서 제공되는 새로운 기능(간단히 이해해야 함)

2. Java 작업(기본 필수)

아주 간단해 보일 수도 있지만, Java 프로그램을 실행하는 방법을 모르십니까? 하지만 우리는 IDE를 통해 Java 프로그램을 실행하는 경우가 많습니다. 기본 IDE는 Java 프로그램을 어떻게 실행합니까? 많은 사람들이 이해하지 못합니다.
  이 지식 포인트는 Java 개발자가 마스터해야 할 가장 기본적인 것입니다. Java를 처음 배울 때 첫 번째 단계는 명령줄에서 Java 프로그램을 실행하는 방법을 가르치는 것입니다. 그러나 많은 사람들이 Java 학습을 마치면. IDE를 사용하면 이 모든 것을 잊어버릴 것입니다. 이것을 알아야 한다고 강조하는 이유는 무엇입니까? Java의 가장 순수한 시작 ​​방법을 알고 나면 당시에 몇 개의 디렉터리가 시작되었는지, 실행 이름은 어떻게 지정되었는지, 매개 변수는 무엇인지, 누락된 항목이 있었는지 분석할 수 있습니다. 시작 문제가 발생했을 때. 이는 실제 개발 중에 환경과 관련될 수 있는 이상한 문제를 해결하는 데 도움이 될 것입니다.
 여기서 마스터해야 할 지식은 다음과 같습니다.
javac은 Java 파일을 클래스 파일로 컴파일합니다.
java 명령의 사용, 명령줄에서 패키지를 사용하여 Java 클래스를 시작하는 방법
Java 프로그램과 관련된 다양한 경로(classpath, java.library.path, java가 실행되는 홈 디렉토리 등)

3. 데이터 유형

이에 대해서는 별로 말할 것도 없고, 기본 유형과 객체 유형을 숙달하는 것에 지나지 않습니다. 자바. boxing 및 unboxing 등을 포함하여 JDK가 자동으로 변환하는 방법에 대해 자세히 알아볼 수 있으며 boxing 후 유형 동일성 판단을 피하기 위해 주의할 수 있습니다.
주요 지식 포인트:
기본 유형: int, long, float, double, boolean, . . .
해당 객체 유형: Integer 및 기타 유형을 기본 유형으로 변환, boxing 및 unboxing
객체 유형: equals, hashcode
String 유형의 특성

4 객체 및 인스턴스, 객체 생성

 이와 관련하여 개발자는 Java의 객체지향 기능의 기초가 되는 클래스와 인스턴스의 개념과 차이점을 이해해야 합니다. 주요 지식 포인트는 다음과 같습니다:
클래스와 인스턴스의 개념
인스턴스 생성 과정:
 1. 상속 없음: 메모리 공간 할당, 변수 초기화, 생성자 호출
 2. 상속이 있습니다: 정적 작업 처리, 메모리 공간 할당, 변수를 초기값으로 정의, 기본 클래스->하위 클래스에서, 정의에서 초기화 처리, 생성자 메서드 실행
 주의할 점:
  정적 속성 등이 파생됩니다. 기본 클래스에서-> ; 하위 클래스 초기화
  기본 인수 없는 생성자와 관련된 기능

5. 액세스 제어

이 또한 Java 캡슐화 기능의 기초입니다.
공개 보호 기본값입니다. private for class, method, field 수정 효과

6. 프로세스 제어

 자바 프로세스 제어의 기초. 일부 구문은 반드시 자주 사용되는 것은 아니지만 이를 이해하고 적절한 위치에 사용해야 합니다.
마스터해야 할 사항은
if, 스위치, 루프, for, while 및 기타 프로세스 제어 구문

7 객체 지향 프로그래밍의 개념

입니다.

 이것은 모든 Java 개발자가 숙달해야 하는 Java의 핵심 개념입니다. Java의 많은 기능이나 지식 포인트는 Java 객체 지향 프로그래밍 개념과 관련되어 있습니다. 내가 이해하기로 좋은 개발자는 이러한 기능(지식 포인트)을 스스로 이해해야 할 뿐만 아니라 이러한 객체가 Java의 객체 지향 프로그래밍 개념에 어떻게 반영되는지 알아야 하며 이는 개발자가 Java를 마스터하는 데 더 도움이 됩니다. , 기타 객체지향 프로그래밍 언어도 마찬가지입니다. 주요 지식 포인트는 다음과 같습니다:
객체 지향의 세 가지 주요 특징: 캡슐화, 상속, 다형성 각각의 정의 개념, 특성이 반영됨, 각각의 사용 시나리오
정적 다중 디스패치, 동적 단일 디스패치의 개념
오버로딩의 개념과 사용
상속: 인터페이스의 다중 구현, 기본 클래스의 단일 상속
추상화, 추상 클래스, 인터페이스
다형성: 메서드 재정의의 개념과 사용
인터페이스 콜백

8. Static

  정적 속성은 일상적인 Java 개발에서도 자주 사용됩니다. static 키워드와 관련된 사용법과 키워드와 함께 사용할 수 있는지 여부 등 다른 키워드와 함께 사용할 수 있는 방법을 이해해야 합니다. 추상 및 최종과 같은.
마스터해야 할 주요 내용은 다음과 같습니다.
정적 속성의 정의 및 사용, 클래스 로드 시 초기화 방법
정적 메서드의 정의 및 사용
정적 클래스의 정의 및 사용
정의 및 초기화 타이밍 of static code block

9. 기본 지식 포인트

다음은 주로 흩어져 있고 체계적으로 분류되지 않은 몇 가지 Java 지식 포인트입니다. 일상적인 개발에도 많이 사용됩니다. 사실 이 글에는 내용이 많아서 여기에 임시로 요약해 놓았습니다.
 포함:
equals, hashcode, string/stringbuffer, final, finally, finalize

10 컬렉션 프레임워크

 이것입니다. Java 개발을 할 때 컬렉션 프레임워크를 사용할 필요가 없다고 할 수 있습니다. 이는 매우 중요합니다. 그러나 여기서 지식 포인트는 어렵지 않지만 컬렉션의 내부 구현을 이해하는 것이 가장 좋습니다. 이는 다양한 시나리오에서 문제를 해결하는 데 적합한 프레임워크를 선택하는 데 도움이 되기 때문입니다. 예를 들어 10,000개의 요소가 있는 컬렉션에는 종종 다음을 수행해야 합니다. 판단 작업이 포함되어 있으며 컬렉션의 특성이나 내부 구현을 알면 올바른 선택을 하기 쉽습니다.
 다음 내용이 여기에 포함됩니다(동시성 관련은 포함되지 않음):
수집 프레임워크 시스템: 기본 컬렉션, Map
특정 컬렉션 구현 내용, List, Set, Map 특정 구현, 내부 구조, 특수 메서드, 적용 가능한 시나리오 등
컬렉션 관련 툴 클래스 활용 컬렉션 등

11. 예외 프레임워크

  Java 개발에서는 예외를 그다지 심각하게 받아들이지 않을 수 있습니다. 일반적으로 예외가 발생하면 직접 발생하거나 아무렇게나 처리할 수 있으며 프로그램의 전체 작동에 큰 영향을 미치지 않습니다. 그러나 엔터프라이즈 수준 디자인 및 개발에서는 예외 디자인 및 처리 품질이 시스템의 전반적인 견고성과 관련되는 경우가 많습니다. 개발자의 경우, 좋은 시스템의 예외 처리는 시스템에 흩어져 있는 많은 예외 처리 논리를 피하기 위해 통합되어야 하며, 예외는 제어 가능해야 하고 특정 예외가 발생한 후 처리하는 방법이 있어야 합니다. 따라서 예외 프레임워크는 매우 간단하지만 전체 엔터프라이즈 수준 애플리케이션 개발에서는 예외 처리가 매우 중요합니다. 예외를 잘 처리하려면 Java의 예외 시스템을 이해해야 합니다.
 이 부분에서 숙지해야 할 지식 포인트는 많지 않습니다. 주로:
Exception 시스템:
Throwable
Exception
RuntimeException
Error
RuntimeException과 일반 Exception, 특정 처리 방법 등의 차이점

12. Java IO

 IO Java에서는 파일 읽기 및 쓰기만큼 간단할 뿐만 아니라 소켓 네트워크 읽기 및 쓰기 등 모든 입출력 작업을 포함합니다. 예를 들어 표준 HTTP 요청에서 Post의 내용을 읽는 것도 출력 프로세스입니다.
IO의 경우 Java는 기본적인 입출력 관련 API를 제공할 뿐만 아니라 이를 단순화하는 일부 Reader, Writer 및 기타 API도 제공합니다. 이는 특정 개발(많은 수의 IO 작업이 포함된 프로젝트)에서도 중요하며 일반적인 일상 개발(로그, 임시 파일 읽기 및 쓰기 등)에도 포함됩니다.
 여기서 주요 지식 포인트는 다음과 같습니다.
기본 IO 시스템: InputStream, OutputStream, Reader/Writer, 파일 읽기, 다양한 스트림 읽기 등을 포함합니다.
NIO의 개념, 구체적인 사용 방법 및 사용 시나리오

13. Multi- 스레드 동시성

멀티스레딩은 일반적으로 Java에서 어려운 영역으로 간주됩니다. 멀티스레딩은 특히 많은 수의 IO 작업이 차단되는 경우 CPU 사용량을 효과적으로 늘리고 전반적인 시스템 효율성을 향상시킬 수 있지만 제대로 사용하지 않으면 시스템이 크게 개선되지 않는 양날의 검이기도 합니다. 개선이 되지 않으며, 멀티스레드 간 디버깅 등의 문제도 발생하게 됩니다.
멀티스레딩에는 내용이 많습니다. Java에서 멀티스레딩을 처음 사용하기 위해 숙달해야 할 지식 포인트만 간략하게 설명하겠습니다. 앞으로는 멀티스레딩의 사용 시나리오를 소개할 기회가 있을 것입니다. 몇 가지 고급 기능을 자세히 설명합니다.
멀티스레딩의 구현 및 시작
호출 가능과 실행 가능의 차이점
동기화, 재진입 잠금 각각의 특성 및 비교
스레드 풀
실행 결과를 얻는 미래의 비동기 방식
동시 패키지
잠금
..

14. 네트워크

Java TCP 프로토콜과 UDP 프로토콜을 직접 운용할 수 있는 API도 제공합니다. 네트워크 성능을 강조해야 하는 경우 TCP/UDP를 직접 통신에 사용할 수 있습니다. Tomcat 등의 소스코드를 보면 이러한 관련 API의 사용법을 확인할 수 있습니다. 그러나 TCP는 일반적으로 직접적으로 사용되는 경우가 거의 없으며, 처리를 위해 MINA, Netty 등의 프레임워크를 사용하는 경우가 많다.

15. 시간 및 날짜 처리

 거의 모든 애플리케이션에서 시간 및 날짜 처리를 우회할 수 없지만 JDK8 이전의 시간 관련 API 사용은 친화적이지 않습니다. 그 시대에는 Joda와 같은 시간대가 사용 가능했습니다. JDK8 출시 이후 새로운 time API는 기본적으로 다른 프레임워크의 장점을 통합해 직접 사용할 수 있게 됐다.
Java 개발자의 경우 API를 사용하여 시간과 날짜를 처리하는 데 능숙해야 합니다.
 구체적인 지식 포인트는 더 이상 나열되지 않습니다. 앞으로 JDK8의 시간 및 날짜 API 사용법을 요약하는 특별 기사를 작성하겠습니다.

16. XML 구문 분석/JSON 구문 분석

사실 이 두 가지 콘텐츠는 J2SE에는 없지만 일상적인 개발에서 다른 프로그램과의 상호 작용과 구성 파일과의 상호 작용은 점점 더 분리할 수 없게 됩니다.
 그러나 개발자의 경우 XML/JSON 구문 분석의 몇 가지 특정 원리와 방법을 이해할 수 있으면 각 특정 시나리오에서 적절한 방법을 선택하여 프로그램을 더욱 효율적이고 강력하게 만드는 데 도움이 됩니다.
 XML: DOM 구문 분석 및 SAX 구문 분석의 기본 원칙과 각각의 적용 가능한 시나리오를 이해해야 합니다.
 JSON: Jackson, FastJson, Gson 등과 같은 몇 가지 일반적인 JSON 프레임워크의 사용법을 이해해야 합니다. .

17. Maven의 사용

Maven은 Java의 일부는 아니지만 Maven은 혁신적이며 Java 개발에 큰 편의를 제공합니다. 종속성 도입 및 관리부터 개발 프로세스 및 릴리스 출력 업데이트, 심지어 버전 업데이트까지 Maven을 사용하면 개발 프로세스의 복잡성을 크게 단순화하여 많은 시간을 절약할 수 있습니다. Maven은 Java 개발자의 표준이 되었다고 할 수 있습니다. 그러므로 나는 Maven을 Java 개발자에게 필요한 기본 지식 포인트라고 생각한다. 앞으로는 Maven 등을 사용하면서 경험과 기술을 추가할 것이므로 여기서는 자세히 다루지 않겠습니다.

18. Generics

이것은 JDK5에서 도입된 새로운 개념입니다. 실제로는 Java 코드를 작성할 때 다소 편리할 것입니다. 제네릭 정의와 같은 작업이 반드시 사용되는 것은 아니지만 일부 기본 공용 구성 요소를 개발할 때 사용됩니다. 이 부분은 필요할 때 간단히 사용할 수 있는 한 자세히 살펴볼 수 있습니다.

19. 주석

 도 jdk5 이후에 도입되었습니다. Spring은 처음부터 xml을 표준 구성 파일로 사용하는 훌륭한 프레임워크입니다. 그러나 Spring 3 이후, 특히 spring-boot가 등장한 이후에는 xml 구성 파일을 단순화하기 위해 주석을 사용하는 것이 점점 더 대중화되었습니다. 개발자의 경우 xml 구성에서 많은 시간을 절약할 수 있습니다. 하지만 단점은 주석이 다양한 클래스에 분산되어 있다는 점입니다. xml과 달리 모든 구성을 전역적으로 이해하고 관리할 수 있으므로 모든 xml을 완전히 대체할 수 있는 방법은 없습니다. 일반 개발자의 경우 주석을 사용하는 것만으로도 충분합니다. 일부 공개적으로 조직된 개발자는 주석의 정의와 구현을 이해하고 필요할 때 자세히 살펴볼 수 있습니다.

20.RMI

 RemoteMethodInvocation은 Java 언어 고유의 원격 호출 인터페이스로 비교적 간단하고 사용하기 편리합니다. 그러나 언어 간 지원이 필요한 경우 웹 서비스와 같은 다른 방법을 사용하여 이를 지원해야 합니다. 일반적으로 프로그램은 RMI를 사용할 필요가 없지만 특정 상황에서는 RMI를 사용하여 프로그램의 원격 시작 및 중지를 제어했습니다.

21.JNI

 Java에서 로컬 인터페이스 메소드를 호출할 수 있는 Java Native Interface는 일반적으로 C/C++ 코드를 호출하는 데 사용됩니다. 주목할 점은 Java에서 so/dll 파일을 로드할 때의 경로 문제입니다. 인터페이스 호출 자체는 복잡하지 않지만, 필요한 로컬 인터페이스 라이브러리가 로드되었는지 확인하는 데는 많은 시간이 걸리는 경우가 많습니다.

위 내용은 내 견해 중 일부에 대한 간략한 소개일 뿐이며 이러한 기본 Java 지식 포인트와 기술 포인트에 대한 소개입니다. 이 내용은 제가 수년간 Java를 사용해 본 내용을 요약한 것입니다. 이제 막 Java를 접했거나 Java에서 개발할 계획입니다. 저는 경험이 있고 Java를 더 효율적으로 배우고 사용하여 우회하거나 귀중한 시간을 낭비하지 않기를 바랍니다. 내용에 아직 부족한 부분이 있어 향후 글에 추가하도록 하겠습니다. 물론 제 개인 능력의 한계로 인해 약간의 오류와 누락이 있을 수 있습니다. 수정을 환영하며, 함께 논의하고 함께 노력하여 이 글이 도움이 필요한 사람들에게 정말 도움이 되기를 바랍니다.

Java를 배우는 학생들 주목! ! !

위 내용은 Java 사용 경험의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.