본문 바로가기

개념 정리

[개념 정리] 자바

자바

1.플랫폼 제한이 없는 언어. 

Java 코드 자체가 플랫폼이 아닌 가상머신에 종속적이라는 점, 그리고 프로그램 실행의 주체가 운영 체제가 아닌 Java Runtime Environment이라는 점 때문이며 이러한 점을 통틀어 Java는 플랫폼 종속성이 낮은 언어

2.객체 지향 프로그래밍 언어

3.백엔드 개발, 안드로이드 앱 개발 언어.


자바 개발 킷, JDK(Java Development Kit):  자바 프로그램 개발 도구 + 실행 도구(JRE)를 모아놓은 소프트웨어 패키지.

- Java 바이트코드 컴파일러, Java 디버거 등 (개발) + JRE (실행)

   - Oracle JDK: 비상업적 이용 무료. 상업적 이용 유로.

   - OpenJDK: 오픈소스

- JRE(Java Runtime Environment): 자바 프로그램을 실행시키는 환경(핵심 파일, 라이브러리들, JVE를 포함).

   -JVE(Java Virtual Environment): Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상머신. JRE에 포함되어 있다. JVM은 플랫폼 독립적으로, JVM이 실행 가능한 환경이라면 어디서든 Java 프로그램이 실행될 수 있도록 한다.


통합 개발 환경, IDE(Integrated Development Environment): 소프트웨어 개발에 관련된 모든 작업, 즉 패키지 인클루딩,문서 편집 , 컴파일, 디버그, 원격 서버 액세스, 바이너리 배포 등을 하나의 프로그램 안에서 모두 처리하는 환경을 제공하는 툴. 게임(특정 언어 개발 킷)이 들어가있지 않은 게임기(IDE). IDE로 자바 프로그램을 개발하려면 JDK가 필요하다.

  • Eclipse: 오픈소스 자바 특화 IDE. 순정은 다른 IDE에 밀리지만 수많은 플러그인이 존재해 더 유용하게 만들 수 있다.
  • IntelliJ: 무료/유료 자바 특화 IDE. 순정으로도 뛰어난 IDE.
  • 안드로이드 스튜디오: IntelliJ를 기반으로 한 오픈소스 자바로 안드로이드 앱 개발 IDE. 안드로이드의 공식 IDE.

객체 지향 프로그래밍: 객체(특정 기능을 위한 변수,메서드들 포함)들이 소통하게 만드는 방식으로 프로그래밍 

  • 캡슐화: 특정 기능을 위한 변수, 메서드들을 1개의 클래스 캡슐안에 넣기
  • 추상화: 클래스의 세부적인 것들은 추상화시켜(private) 밖에서 안보이게 하고 이 클래스를 외부인이 사용하는 데 필수적인 것들만 밖으로 드러낸다(public).
  • 상속: 한 클래스(자식) 특정 클래스(부모)를 상속하면 부모의 변수와 메서드들을 모두 물려받으면서 새로운 변수와 메서들을 덮어쓰거나 추가할 수 있다. New Game+.
  • 다형성: 동일한 변수나 메서드가 상황에 맞춰서 다르게 사용될 수 있다.

디자인 패턴: 특정 문제들을 해결하기 위한 객체 지향 프로그래밍 풀이법 모음


유명한 자바 라이브러리들

  • JavaFX: GUI 만들기
  • JDBC: 데이터베이스 사용
  • JUnit: 코드가 어떠한 조건에서도 잘 돌아가는지 테스트

유명한 자바 프레임워크들

  • 스프링: 웹 프레임워크
  • 스프링부트: 더 간편한 웹 프레임워크
  • 메이븐: 빌드(소드 코드 -> 실행 파일)를 도와주는 프레임워크. 프로젝트 객체 모델(POM) 파일에 사용할 라이브러리들을 적어두면 알아서 다운받아 연결시켜주고 추후 업데이트도 해준다. 프로젝트 정보, 환경 설정에 대한 정보도 관리. 팀 개발을 할 때 수많은 라이브러리 파일들이 아니라 pom.xml 파일만 공유하면 모두 동일한 라이브러리를 사용할 수 있다. 특정 라이브러리가 다른 선행 라이브러리들을 필요로 하면 그것들을 적지 않아도 알아서 받아준다.
  • 그레이들: 더 간편한 빌드 프레임워크. 안드로이드의 표준 빌드 시스템.

테스트 주도 개발, TDD(Test-Driven Development) 

CI 관라: 깃랩 CI/CD, 젠킨스

코드 분석: SonarLint/SonarQube

빌드 관리: 메이븐, 그레이들

Code Coverage 관리: JaCoCo

'개념 정리' 카테고리의 다른 글

[개념 정리] 구글  (0) 2022.06.06
[개념 정리] 자바스크립트  (0) 2022.06.06
[개념 정리] 파이썬  (0) 2022.06.06
[개념 정리] 아마존 웹 서비스 AWS  (0) 2022.06.06
[개념 정리] 명령줄 인터페이스 CLI  (0) 2022.06.06