일단 해보는 코딩/Java

[Java] Java(자바)란?

eun_zoey2 2022. 7. 18. 16:10
728x90
Java(자바)란?

 

현재는 오라클(Oracle)로 이전된 예전의 예전의 소속의 개발자 제임스 고슬링 등의 일부 연구진들이 '그린 프로젝트'라는 이름으로 '오크(Oak)'라는 프로그래밍 언어를 개발하고 있었다.

오크는 오디오, TV,세탁기 등 각각의 가전제품을 제어하는 통합된 언어로 개발 중이었지만 결국 목적을 달성하지 못하고 실패로 돌아간다. 일종의 Embeded 시스템 구현을 하려고 했지만 C, C++로 개발하는 것이 더 낫다.

그 무렵 웹 (WWW)이 급속도로 발전하게 되고, 이에 발맞추고자 썬에서는 오크의 명칭을 Java 로 바꾼 뒤 서로 다른 컴퓨터 (OS:Operating System(운영체제))사이에서 호환성과 이식률을 높인 언어로 발전시켰다.

 

JVM(Java Virtual Machine)을 개발하기에 이르렀다. => 자바로 어느 프로그램을 짜면 어느 OS(Windows, Linux, Macintosh) 에서도 실행된다.

 

더보기

프로그래밍 언어 : 사람이 컴퓨터와 의사소통을 하기 위한 수단
컴퓨터는 하드웨어와 소프트웨어로 나뉨
소프트웨어에는 시스템 소프트웨어와 응용 소프트웨어가 있음
1972: C(함수중심), 1983: C++(객체중심), 1991: Python, 1995: JAVA, 2002: C#(MS)  
컴파일러 : 작성된 코드가 컴퓨터가 이해할 수 있게 해줌
java sdk(software development kit) 자바 개발도구에 java se(표준), java ee(서버용)가  있음. java se 12가 최신이지만 현장에서는 java se 7~8 사용.

java는 jdk(java development kit) 자바개발도구, jre(java runtime environment: 자바 실행환경(jdk에 포함됨)),

그리고 jvm(java virtual machine) 자바 가상머신(운영체제 독립적으로 실행됨)으로 이루어져있다.
Java를 설치할 Windows에 Chrome이 설치되어 있으면 좋고 Windows에서는 확장자를 보이게 해주는 것이 좋은데 windows 탐색기>상단 구성>폴더 및 검색옵션>보기 탭>알려진 파일 형식의 확장면 숨기기를 체크 풀고>확인하고 나가기


자바는 OOP(Object Oriented Programming)인데 객체지향적인 상속, 캡슐화, 다형성이 잘 지원된다. Java API는 운영체제 독립적이어서 Windows 머신에서 생성한 클래스를 Linux 머신에서도 돌릴 수 있게 JVM으로 관리된다. Grabage Collection을 통해서 개발자가 메모리를 관리하지 않아도 자바 스스로 사용하지 않는 메모리를 회수해서 비워준다. 동적으로 작동하므로 적절한 시기에 라이브러리를 동적으로 로딩해서 처리하게 한다. 네트워크와 웹에서의 작동을 위해서 Thread(병렬처리) 라이브러리를 가지고 있다. 분산 처리 네트워크에 강하다. 
 

Java로 할 수 있는 것으로 CLI(Command Line Interface/CUI:Command User Interface) Application, GUI(Graphic User Interface) Application, Java Applet(Web 브라우저에서 작동하는 프로그램으로 HTML 안에서 애플릿을 지정하면 Web 서버로부터 자동으로 다운로드되어 클라이언트의 Web 브라우저에서 동작된다), Java Servlet(Web 서버 상에서 동작하는 프로그램으로 서버에서 실행되고, 실행 결과를 Web 페이지로 클라이언트에게 보내는데 서버에서 동작하는 CGI보다 효율이 좋다), JSP(Java Server Page: HTML 문서와 Java 프로그램을 조합해서 동적인 Web 페이지를 간단하게 만들 수 있다. JSP는 서버에서 실행되고 그 결과를 클라이언트에게 보내주는데 HTML 문서 속에 Java 코드를 삽입하는 형태로 작성된다), 그리고 Java Beans(Java로 작성한 프로그램을 부품(컴포넌트)으로 취급해서 이 부품들을 조합해서 Application을 간단하게 만들어 낼 수 있다). 

** JDK(Java Development Kits)에는 Java SE(Standard Edition)과 Java EE(Enterprise Edition)

 

CGI(Common Gateway Interface)는 웹 브라우저의 요구를 받아서 웹 서버가 실행하는 프로그램 인터페이스이다. 스크립트 언어 Perl로 작성되는데 CGI 프로그램 HTML 문을 생성하고 웹 서버는 그것을 받아서 브라우저에 넘긴다. CGI 프로그램을 사용하면 웹 페이지의 접근 횟수 등을 볼 때마다 다른 정보를 웹 페이지에 실을 수 있도록 동적 웹 페이지를 생성한다.

CSS(Cascading Style Sheets)는 HTML이나 XML로 작성된 문서의 표시 방법을 기술하기 위한 스타일 시트 언어이다.

CSS는 HTML요소가 화면, 동영상, 음성 등 다른 매체 상에 어떻게 렌더링(rendering:조합)되어야 하는지 지정하는 기법이다.

 

Java VM(Virtual Machine)은 Java로 작성된 프로그램을 실행하기 위한 환경이다.

Java 프로그램의 실행 파일은 플랫폼에 의존하지 않는 바이트 코드로 만들어져 있다. Java VM은 바이트 코드를 실행하는 머신의 기종에 따라서 변환되어 실행된다. 이런 기능은 Java VM만 있으면 기종이나 OS에 무관하게 Java 프로그램을 실행하게 해 주므로 컴퓨터뿐만 아니라 Java VM이 탑재된 가전제품이나 게임기 등에서도 Java 프로그램이 실행될 수 있다.

 

자바 프로그램은 우선 프로그램을 기술한 뒤 >클래서_명의 대/소문자까지 똑같이 써서 파일_명을 지정해서 저장하는데  *. java 확장자가 되어야 한다. 이를 소스 파일, 소스 프로그램이라고 한다 > 이제 javac 컴파일러로 컴파일하면 클래스 파일이 생성되어 소스 파일과 동일한 디렉터리에 저장된다 > 이제 java 명령어로 이 프로그램을 실행하는데 *. java확장자는 필요 없다 > 이제 Java VM이 클래스 파일을 읽어 들여서 프로그램을 실행한다.

=> C나Java 같은 프로그램은 사람이 작성한 코드를 컴퓨터가 이해할 수 있게 이진(binary) 파일로 변환하는 과정을 Compile 한다고 하고, 이런 도구를 Compiler라고 하는데 G++, GCC 등이 있다. <- 참고로  Python, R, Bash Shell 등은 컴파일 과정 없이 바로 사용할 수 있는 언어로써 Interpreter  언어라고 한다.

=> 컴파일하는 언어는 먼저 컴파일 과정을 거치기 때문에 소스코드 수정(수정 후 다시 컴파일 하는 과정이 있음)이 불편하지만, 일단 컴파일된 프로그램은 속도가 매우 빠르다. 인터프리터 언어는 컴파일 과정이 없어서 매우 편리하게 즉시 사용될 수 있지만 속도가 느리다. 

자바는 대/소문자를 엄격하게 구별한다.
주석은 여러줄:  /* ~ */ , 한 줄  : // 를 사용한다.
예 악어(try, if, else, while,... )는 구문에서 사용할 수 없다.
하나의 문장이 끝날때에는 ; 를 써준다.
문자(char : l, o, v, e,)는 ' ' 사이, 문자열(String : love)은 " " 사이에 넣는다.

 

매써드(method)는 객체(object) 의 기능을 표현하는 방법(함수)으로 C 언어의 함수와 역할과 정의 방법이 유사하지만, C에서처럼 독립적으로 호출될 수 없고 반드시 객체와 같이 (study.score())사용되어야 한다.

클래스는 객체의 구조, 종류, 동작 등을 나타내고 객체를 생성하게 하는 일종의 틀이다. 클래스는 객체의 모든 특성(클래스 변수와 클래스 메써드)을 가지고 있어서 , 자바 프로그램은 클래스의 집합으로 부르기도 한다.

 

변수(variable)란 데이터를 넣어두는 상자와 같은 것이다. 프로그램에서 문자와 숫자를 다룰 때 그것을 변수에 넣어두는데, 자바에서는 변수의 내용에 따라서 정수형, 실수형, 문자형 등 형(type)을 지정해서 용도에 맞게 사용하게 된다. 

 

배열(array)은 문자나 대량의 동일한 성질의 데이터를 하나의 배열 변수_명으로 묶어서 변수처럼 사용하게 한다.

=> Python에서의 list [정수, 문자,....]는 매우 유영한 데이터 타입이다.

 

'일단 해보는 코딩 > Java' 카테고리의 다른 글

[Java] 스캐너(Scanner) 예제모음  (0) 2022.07.20
[Java] 연산자 종류  (0) 2022.07.20
[Java] 변수 선언 규칙  (0) 2022.07.19
[Java] 변수의 타입  (0) 2022.07.19
[Java] 기본문법과 형변환  (0) 2022.07.18