개발자양성과정의 수료가 끝나고 취업준비를 하며 코딩테스트를 하던 중. 분명 배웠던 것인데 떠오르지 않는 부분이 몇몇곳 존재한다는 사실을 알았다. 그래서 이번에 이렇게 배웠던 것을 다시 처음부터 배운것을 정리해보고자 한다.
JAVA는 현재 개발자 업계에서 가장 많이 사용되는 프로그래밍 언어중 하나이다. 언어라고는 하지만, 단순한 언어는 아니다. JAVA는 다양한 라이브러리와 실행환경을 가지고 있는 거대한 플랫폼과 같아서, 사용하기에 현대적이고 괘적한 문법구조를 가지고 있다. 또한 그레픽이나 네트워킹, 데이터베이스를 쉽게 구현할 수 있으며, 한번 작성해두면 코드를 변경하지 않고도 다른 컴퓨터에서도 실행가능 하다는 점이 장점이다.
자바의 특징들을 나열해 보자면, 총 10가지 단어로 표현할 수 있다. 객체지향적. 분산처리가능. 견고, 멀티스레드 지원, 구조 중립적, 동적, 인터프리트 언어, 이식성, 안전, 단순이다. 그에 대한 설명을 해보자면.
객제지향은 객체별로 코드를 작성하고 객체들을 조합하여 전체 프로그램을 완성하는프로그램 설계 방법론이다. 객체 지향 기법을 상요하면 작성된 코드를 재사용하기가 쉬워서, 보다 빠르게 신뢰성 있는 프로그램을 만들 수 있다. 자바에서는 기본 데이터 타입(int, float, long 등)을 제회하면 모든 것이 객체로 표현된다.
분산저리를 지원하는 자바는 네트워크상에서 동작하는 것을 기본으로 설계된 언어로 TCP/IP, HTTP, FTP 같은 프로트콜을 처리할 수 있는 라이브러리를 가지고 있다. 따라서 다른 언어보다 쉽게 네트워크 관련 프로그램을 개발할 수 있으며, 프로그래머는 로컬 파일 시스템에서 파일에 접근하는 것과 마찬가지로 네트워크에서 URL을 사용하여 네트워크의 자원에 접근하여 사용할 수 있다.
단순하고 견고하다. 자바는 C++에서 출발했지만 꼭 필요로 하는 기능만을 포함시키고 복잡하거나 많이 쓰이지 않는 기능은 제거해 단순함을 가지며, 자동 메모리 관리 기능, 멀티 스레드, 객체 지향적인 방법으로 제작된 방대한 라이브러리를 무료로 제공하여 원하는 프로그램을 힘들이지 않고 문제없이 작성할 수 있다.
자바는 언어 수준에서 멀리스레딩을 지원한다. 따라서 다른 언어와는 다르게 아주 쉽게 멀티스레딩 프로그램을 작성할 수 있다. 멀티스레딩이란 여러 가지 작업을 동시에 실행하는 것을 의미한다. 특히 자바는 멀티 프로세서 하드웨어를 지원하도록 설계되어 있으므로 멀티프로세서 시스탬에서 높은 효율을 낼 수 있다.
자바는 컴퓨터 구조에 중립적이다. 이 특징이 가장 중요하다고 할 수 있다. 자바에서는 컴파일된 실행 코드가 플랫폼 독립적이다. 자바 컴파일러는 자바언어로 작성된 프로그램을 바이트 코드라는 특수한 가장 컴퓨터 S/W가 필요한데, 이것을 바이트 코드를 한 줄씩 읽어서 해석한 후에 실행한다. 따라서 자바로 개발된 프로그램은 CPU나 운영체제의 종류에 관계없이 자바 가상 기계를 설치할 수 있는 시스템에서는 어디서나 실행할 수 있다.
자바는 동적으로 변화하는 환경에 적응하도록 설계되었다. 라이브러리는 실행파일에 영향을 끼치지 않고 자유롭게 새로운 기능들을 추가할 수 있다. 자바는 실행되기 직전에 라이프러리를 동적으로 링크하므로 실행할 때 변경된 라이브러리가 자동적으로 참조되지만. 기존의 C나 C++은 라이브러리가 변경되면 소스파일들을 다시 컴파일, 링크 하여 새로운 실행파일을 생성해야했다.
자바는 네트워크 환경에서 운영되는 언어이므로 다른 언어보다 안정성이 요구된다. 자바는 처음부터 다음과 같은 작업들이 불가능하게 설계되었다. '실행 스택을 벗어난 접근', '자신의 프로세스 밖의 메모리 공간 접근', '파일을 허락없이 읽거나 쓰는 것'. 자바 버전 1.1부터는 클래스에 디지털 서명 개념을 도입하였다. 따라서 클래스의 작성자를 신뢰하면 클래스에게 더욱 많은 권한을 부여하도록 설계하였다.
용
TCP/IP
인터넷 프로토콜 스위트(영어: Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.
TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.
TCP
전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다.
TCP는 전송 계층에 위치한다. 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나이다. TCP는 웹 브라우저들이 월드 와이드 웹에서 서버에 연결할 때 사용되며, 이메일 전송이나 파일 전송에도 사용된다.
FTP
파일 전송 프로토콜(File Transfer Protocol, FTP)은 TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다. 파일 전송 프로토콜은 TCP/IP 프로토콜 테이블의 응용 계층에 속하며, 역사는 오래 되었지만 지금도 인터넷에서 자주 사용된다.
최초의 FTP 클라이언트 애플리케이션들은 운영 체제가 그래픽 사용자 인터페이스를 갖추기 이전에 개발된 명령 줄 프로그램이었으며, 대부분의 윈도우, 유닉스, 리눅스 운영 체제에 현재도 기본 포함되어 있다. 그 뒤로 수많은 FTP 클라이언트 및 오토메이션 유틸리티들이 데스크톱, 서버, 모바일 장치, 하드웨어용으로 개발되고 있으며, FTP는 웹 페이지 편집기와 같은 생산성 응용 프로그램들에 통합되고 있다.
- 출처 : 위키백과 -
'백엔드 개발자 기록 일람 > java 학습 기록' 카테고리의 다른 글
05. Java If- else 문 (1) | 2023.12.27 |
---|---|
04. Java 수식과 연산자 (1) | 2023.12.21 |
03. Java 변수와 자료형 (1) | 2023.12.20 |
02. Java 프로그램의 구성 요소 (0) | 2023.12.19 |
01. Java 가상기계 (0) | 2023.12.16 |