java란

ezzange·2022년 8월 22일
0

java

목록 보기
1/16
post-thumbnail
post-custom-banner

자바란 무엇인가?

자바는 1995년도에 출시된 고급 클래스 기반 객체 지향 프로그래밍 언어이며 이는 고급 언어로 컴퓨터가 알기 쉬운 0과 1로 이루어진 언어가 아닌 사람이 보다 쉽게 사용할 수 있도록 만들어진 언어이다.

객체 지향 프로그래밍이란 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 말한다. 이때 사용되는 언어를 객체 지향 언어라 하는데, 자바는 100% 객체 지향 언어이기 때문에 아주 작은 프로그램이라 할지라도 객체를 만들기 위해 설계도인 클래스를 작성한 후 객체와 객체를 연결하여 목적에 맞는 프로그램을 만든다. 이 때문에 객체 지향 언어가 가져야 하는 캡슐화, 상속, 다형성 기능을 지원한다.

자바의 특징은 다음 아래와 같다.

이식성이 높은 언어이다.

이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다. 자바는 원도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있으며 단순한 콘솔 프로그램에서 클라이언트용 윈도우 앱, 서보용 웹 앱, 모바일용 앱등 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다.

함수적 스타일 코딩을 지원한다.

자바8 부터 함수적 프로그래밍을 위해 람다식을 지원하는데 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 간결해진다. 이로 인해 대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍에 적합하다.

메모리를 자동으로 관리한다.

자바는 개발자가 직접 메모리에 접근항 수 없도록 설계되었으며, 메모리는 자바가 직접 관리한다. 객체 생성 시 자동으로 메모리 영역을 할당하고 사용 후 쓰레기 수집기를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.

멀티스레드를 쉽게 구현할 수 있다.

자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제와 상관없이 하나의 프로그램에서 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리가 가능한 멀티 스레드 프로그래밍을 구현할 수 있다.

동적 로딩을 지원한다.

자바 애플리케이션은 클래스로부터 생성되는 여러 객체들이 서로 연결되어 실행하는데 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생산하며, 유지보수(수정)시에도 해당 클래스만을 수정하여 전체 애플리케이션을 수정할 필요가 없어 유지보수가 쉽고 빠르다.

오픈소스 라이브러리가 풍부하다.

자바는 오픈소스 언어로 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 넘쳐난다. 검증된 오픈소스 라이브러리로 개발 기간을 단축하고 안전성 높은 애플리케이션을 쉽게 개발할 수 있다.

자바 가상 기계(JVM)는 종속적이다.

자바 프로그램은 완전한 기계어가 아닌 중간 단계 바이트 코드이기 때문에 운영체제에서 자바를 실행시키기 위해선 운영체제와 자바 프로그램을 중계해주는 JVM이 필요하다. 바이트 코드는 모든 JVM에서 동일하게 실행되지만 JVM는 운영체제에 종속적이다. 자바 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행되기 때문에 JVM은 운영체제에 맞게 설치되어야 한다.

자바 프로그램은 확장자가 .java인 파일을 작성하여 이 소스 파일을 컴파일러(javac.exe)로 컴파일하면 확장자가 .class인 바이트 코드 파일이 생성된다. 바이트 파일은 JVM 구동 명령어에 의해 JVM에 해석되고 해당 운영체제에 맞는 기계어로 변역된다.

Class 와 Method

자바 실행 프로그램은 반드시 클래스(class) 블록과 main() 메소드(methods) 블록으로 구성되어야 한다. 메소드 블록은 단독으로 작성할 수 없고 항상 클래스 블록 내부에서 작성되어야 한다.

Class - ( 클래스이름 { 클래스블록 } )

클래스란 필드 또는 메소드를 포함하는 블록으로 클래스는 여러 메서드를 포함할 수 있다. 클래스의 구성 멤버 총 4가지이며 멤버 필드, 메서드, 생성자, 그리고 또 다른 클래스가 있다.

클래스 이름은 개발자가 마음대로 정할 수 있다. 주의할 점은 소스파일명과 대소문자가 일치해야하고 숫자로 시작할 수 있으며 공백을 포함해서는 안된다.

생성자 - 모든 클래스는 새 개체가 만들어질 때마다 하나 이상의 생성자를 호출한다. 눈에 보이지 않더라면 이는 생략된 것이지 없는 것이 아니다.

클래스는 세 가지 변수 유형 중 하나를 포함할 수 있다.
지역변수 - 메소드, 생성자 또는 블록 내부에 정의 된 변수는 지역 변수라고 한다. 변수는 메소드 내에서 선언되고 초기화되며 메소드가 완료되면 변수가 파괴된다.

인스턴스 변수 - 인스턴스 변수는 클래스 내에서 변수이지만 모든 메소드 외부의 변수이다. 이러한 변수는 클래스가 인스턴스화될 때 초기화된다. 인스턴스 변수는 특정 클래스의 모든 메소드, 생성자 또는 블록 내부에서 액세스 할 수 있다.

클래스 변수 - 클래스 변수는 정적 키워드와 함께 클래스 내에서, 모든 메소드 외부에서, 선언 된 변수이다.

클래스 하나에 다양한 종류의 메서드 값이 있을 수 있으며 클래스는 대문자로 시작하며 클래스 예시는 아래 사진에서 Test01, String, System이 있다.

Methods - 메소드이름( ){ 메소드블록 }

메소드란 동작들을 나타내는 것으로 메서드를 호출한다 등으로 말할 수 있으며괄호 ( )가 있다면 99% 메서드라고 한다. 예외로 1%는 생성자-대문자로 시작한 메소드로 클래스와 동일하다 ex) Test01( ) { } )

메소드블록에는 실행문이 작성되는데 실행문 뒤에는 반드시 세미콜론;을 붙여야 한다. 또한 메소드 이름도 개발자가 마음대로 정할 수 있지만 main( ) 메소드 만큼은 바꿀 수 없다. 왜냐하면 java.exe로 JVM을 구동시키면 가장 먼저 main( )를 찾아 실행시키기 때문이다.

ps. 주석

주석은 프로그램 실행과는 상관없이 코드에 설명을 붙인 것으로 컴파일 과정에서 주석은 무시되고 실행문만 바이트 코드로 번역되기에 주석을 많이 작성한다고 해서 프로그램의 크기가 커지는 것이 아니라 복잡한 코드일수록 주석을 달면 코드를 이해하기 쉽고 수정이 용이하다.
주석은 다음과 같이 세가지로 나뉘어 진다.

행 주석 - //블라블라 (코드로 포함하지 않고 //오른쪽 내용을 무시한다.
범위 주석 - /* */ 사이에 있는 모든 범위가 가능(여러 줄)
설명 주석 - / 하고 enter 토큐먼트 주석이라고도하며 설명할때 쓰인다.

post-custom-banner

0개의 댓글