본문 바로가기
JAVA/Java

자바 언어 개요

by KkingKkang 2023. 3. 28.

 

자바 언어의 탄생

  • 1991년 ~ 썬 마이크로 : 그린 프로젝트에서 가정용 전자기기에서 사용되는 작은 컴퓨터언어를 디자인함.
  • virtual machine에서 동작하는 중간코드를 생성
  • c++ : 절차지향 + 객체지향 → oak : 완벽한 객체지향 언어 (제임스 고슬링), 이후 java라는 이름으로 바뀜
  • world wide web의 발전과 mosaic의 사용에 주목하여 자바를 기반으로 한 웹 브라우저를 제작함
  • hotjava브라우저로 발전

 

자바 언어의 특징

  • 단순 c++의 전위처리, 포인터 사용, 다중 상속, 구조체, goto문 사용, 연산자 중복 가능 등 기존 어려운부분 제외
  • 가비지 컬렉터로 자동 메모리 관리
  • 객체지향 언어라는 객체를 사용해서 프로그램을 작성하도록 하는 언어 재사용성을 높일 수 있음 코드의 재사용을 넘어선 객체의 재사용 프로그램 개발에 필요한 수많은 클래스 라이브러리를 api로 제공함
  • 분산처리
  • 인터넷 또는 네트워크와 같은 분산 환경에서 tcp, ip등의 프로토콜을 통해 효율적으로 실행될 수 있게 설계된 언어
  • 원격 메서드 호출과 관련된 rmi기능의 라이브러리 제공
  • 인터프리터
  • 자바는 인터프리터에 의해 실행된다.
    • .java → 컴파일 → .class (바이트코드) → interpreting(기계어로 해석) → 실행
    • 자바는 컴파일 언어임과 동시에 인터프리터 언어!
  • 견고
  • 다양한 플랫폼(컴퓨터) 상에서 실행되기 위해 에러의 원인이 되는 요소들을 제거하거나 자동으로 해결
  • 높은 신뢰성
  • 포인터를 사용하지 않음
  • 자동으로 가비지 컬렉션 기능을 수행하여 불필요한 메모리를 정리함
  • 엄격한 데이터 타입의 검사를 통해 에러를 조기에 발견
  • 안전
  • 컴파일 시에 엄격하게 데이터 타입을 검사함으로써 프로그램 실행 시 발생할 수 있는 비정상적인 상황을 미리 방지
    • 코드 분리 / 코드 검증
  • 플랫폼 독립
  • 사용하는 운영체제나 cpu등의 하드웨어 사양에 관계 없이 실행될 수 있음 자바 프로그램 → 자바 컴파일러 → 자바 가상 머신 → 유닉스, 윈도우 등
  • 높은 성능
  • 가비지 컬렉션 기능이 추가되어 있어 자동으로 메로리 관리가 가능
  • 메모리가 할당된 객체의 상태를 추적 관리
  • 멀티 스레드
    • 스레드 : 독자적으로 수행하는 하나의 작은 프로그램
    • 멀티스레드 : 하나의 cpu가 여러 개의 프로그램을 동시에 수행하도록 함 → 수행속도를 빠르게 함
  • 자바는 동적이다
    • 자바는 변화하는 환경에 잘 적응되도록 설계됨
    • 기존의 프로그램에 영향을 주지 않고, 라이브러리에 새로운 메서드나 속성들을 추가할 수 있음

 

자바 플랫폼

  • 소프트웨어만으로 구성됨
  • JDK로 설치됨
  • JAVA SE 가장 기본이 되는 에디션, 자바 언어 대부분의 패키지가 포함됨
  • JAVA EE 현업에서 사용되는 API들이 집약된 에디션 JSP, SERVLET, JDBC, JNDI, JTA, EJB등의 많은 기술들이 포함됨
  • JAVA ME 모바일 기기 등에서 사용되는 API가 포함된 에디션 스마트폰의 자체적인 OS로 인해 거의 사장된 에디션이다.

 

자바 API

  • 프로그래머가 필요로 하는 기본적인 클래스들을 거대한 라이브러리로 미리 만들어서 제공하는 것
  • 미리 제공되는 클래스를 표준 클래스라고 함
  • 자바 언어 자체는 작고 단순한 구조를 갖지만 많은 기능들을 API에서 제공하고 있음
  • 자바 패키지 : java.util 등

 

실습 환경 구축

JDK 자바 개발 환경

Java Development Kit 설치

환경변수 → 시스템 변수 → path → jdk bin폴더 경로 추가

명령프롬포트 → javac 확인

반응형

'JAVA > Java' 카테고리의 다른 글

기능문자 / 서식문자 / 지정자  (0) 2023.03.31
클래스의 구조  (0) 2023.03.30
인터페이스  (0) 2023.03.14
업캐스팅과 다운캐스팅  (0) 2023.03.14
상속  (0) 2023.03.14

댓글