java에 대해서 알아볼 것 이다.
자바란?
현재는 Oracle로 이전된 예전의 Sun Microsystems(Solaris라는 UNIX 시스템 개발) 소속의 개발자 제임스 고슬링 등의 일부 연구진들이 ‘그린 프로젝트’라는 이름으로 ‘오크(Oak)’라는 프로그래밍 언어를 개발하고 있었다.
오크는 오디오, TV, 세탁기 등 각각의 가전제품을 제어하는 통합된 언어로 개발중이었지만 결국 목적을 달성하지 못하고 실패로 돌아간다. 일종의 Embeded 시스템 구현을 하려고 했지만 C, C++로 개발하는 것이 더 낫다.
그 무렵 웹(www)이 급속도로 발전하게 되고, 이에 발맞추고자 썬에서는 오크의 명칭을 Java로 바꾼뒤 서로 다른 컴퓨터(OS:Operating System(운영체제))사이에서 호환성과 이식률을 높인 언어로 발전시켰다. JVM(Java Virtual Mchine)을 개발하기에 이르렀다 =>자바로 어느 프로그램을 생성하면 어느 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을 간단하게 만들어 낼 수 있다).
CGI(Common Gateway Interface)는 웹 브라우저의 요구를 받아서 웹 서버가 실행하는 프로그램 인터페이스이다. 스크립트 언어 Perl로 작성되는데 CGI 프로그램은 HTML 문을 생성하고 웹 서버는 그것을 받아서 브라우저에 넘긴다. CGI 프로그램을 사용하면 웹 페이지의 접근 횟수 등을 볼 때마다 다른 정보를 웹 페이지에 실을 수 있도록 동적 웹 페이지를 생성한다.
CSS(Cascading Style Sheets)는 HTML이나 XML(XML의 방언인 SVG, XHTML 포함)로 작성된 문서의 표시 방법을 기술하기 위한 스타일 시트 언어이다. 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()) 사용되어야 한다.
클래스(class)는 객체의 구조, 종류, 동작 등을 나타내고 객체를 생성하게 하는 일종의 틀이다. 클래스는 객체의 모든 특성(클래스 변수와 클래스 메써드)을 가지고 있어서, 자바 프로그램은 클래스의 집합으로 부르기도 한다.
변수(variable)란 데이터를 넣어두는 상자와 같은 것으로 메모리 공간에 자리한다. 프로그램에서 문자와 숫자를 다룰 때 그것을 변수에 넣어두는데, 자바에서는 변수의 내용에 따라서 정수형, 실수형, 문자형 등 형(type)을 지정해서 용도에 맞게 사용하게 한다.
배열(array)은 문자나 대량의 동일한 성질의 데이터를 하나의 배열 변수_명으로 묶어서 변수처럼 사용하게 한다. <=Python에서의 list[정수, 문자, ...]는 매우 유용한 데이터 타입이다.
데이터 타입
자바에서는 데이터 타입으로 byte(1Byte:8bits), short(2Byte), float(4Byte), long(8Byte), int(4Byte), double(8Byte)이 있고, char(2Byte) 'A', String "MAN" 등이 있는데 int, float, char, String을 주로 사용한다.
데이터 형 타입 전환은 형 변환(casting)을 통해서 할 수 있는데 작은 타입이나 같은 타입이 큰 타입으로 들어갈 때에는 별도의 형 변환이 필요 없고, 큰 타입이 작은 타입으로 들어 갈 때에는 명시적으로 (int)f 식으로 처리해 주어야 한다.
문자는 ‘ ’, 문자열은 “ ” 이다.
char형 변수는 컴퓨터가 숫자로 인식해서 숫자로 자동 형 변환이 되기도 한다.
Eclipse 사용!
Eclipse에서 Java 프로그램 생성은
1) 먼저 프로젝트를 만들고
2) 그 안에 src 아래에 패키지를 만든 뒤
3) 그 안에 클래스를 만든 뒤=>클래스 안에서 소스 파일을 생성하고
4) 실행하면 된다.
좌측에 Create a Java project를 클릭하고, Project name: java01로 해주면 Location에 C:\work\java01로 위치하는 것을 볼 수 있다. 중간의 jre에 javaSE-11로 나와 있어도 놔두고 finish를 클릭하고, 다음 모듈을 생성한다는 창에서 Don't create를 클릭해주면 다시 작업창으로 간다. 좌측의 java01 프로젝트를 확장하고 아래의 src 우클릭(OR Alt+Shift+n)>New>class>Name: Test 해주고, 다른 것은 건드리지 말고 하단의 첫 번째 public static void main(String[] args)를 체크해주고 Finish를 클릭해서 Test 클래스의 소스 입력 폼이 다음처럼 보인다.
package java01;
public class Test {
public static void main(String[] args)
// TODO Auto-generated method stub
} 가 보인다. // TODO ~ 아래에 System.out.println(“안녕 하세요?”); 를 입력하고, Ctrl+ F11을 클릭하면 처음 파일이므로 저장되는 곳을 묻는데 하단의 Always save ~에 체크해주고 OK를 클릭하면 실행되어서 ‘안녕 하세요?’를 보이면 된다.
System.out.print(ln)(); 는 () 안의 내용을 출력
=>print()는 출력, println()은 줄바꿈 출력
Scanner scan = new Scanner(System.in); 는 입력를 받는 내장 클래스
=>scan은 Scanner라는 클래스의 객체(object)인데 Scanner 클래스가 가지고 있는
모든 멤버 변수/메써드(this)를 의미한다.
=>입력받은 내용을 scan.next(문자열 입력 받음) or scan.nextInt(정수 입력 받음) or scan.nextDouble(소수 입력 받음)
예를 들어서 Scanner scan = new Scanner(Sytem.in); 에서 보면
개발자가 Scanner()라는 클래스를 자바로 작성하지 않아도 불러서 객체로 만들어서 사용하면
된다. 이미 자바 라이브러리에 다 들어 있다.
C:\Program Files\Java\jdk12.0.1\lib로 가면 src.zip 파일 안에 들어 있다.
'JAVA' 카테고리의 다른 글
| [JAVA]문제 풀이 1 (0) | 2022.07.20 |
|---|---|
| [JAVA]연산자 (0) | 2022.07.20 |
| [JAVA]변수 타입2 (0) | 2022.07.19 |
| [JAVA] 변수 타입 1 (0) | 2022.07.19 |
| [JAVA] 실습 07-19 (0) | 2022.07.18 |
댓글