인터넷
TCP/IP라는 통신 프로토콜을 이용해 정보를 주고 받는 네트워크
컴퓨터를 하나의 통신망으로 연결해주는 서비스
웹
World Wide Web 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간
인터넷 서비스를 활용해서 정보를 주고 받을 목적의 서비스
프로그래밍 언어로 작성된 소스코드를 컴퓨터가 이해할 수 있는 기계어(0,1)로
변환하는 과정 -> 컴파일, 역할 -> 컴파일러
자바 파일이 컴파일될 때 class 파일이 만들어짐
class 이름은 첫글자가 대문자인게 관례
자바의 특징
1) 이식성이 높은 언어
c언어로 컴파일할 경우 5개에서 실행할때 5번 컴파일해야하지만 자바언어로 컴파일할 경우 1번만 컴파일하여 class 파일을 만들고 그 class 파일을 각각의 os에 맞는 JVM을 설치하면 해당 JVM이 읽고 실행함
이처럼 자바로 만들면 컴파일을 1번만 하면 되서 이식성이 높다고 하는 것
개발환경(윈도우,맥) - 개발자가 개발하는 PC
운영환경(리눅스-비용문제로) - 사용자가 사용하는 PC
2) 객체 지향 언어 (OOP, Object Oriented Programming)
부품 객체를 먼저 만들고, 이것들을 조합해 전체 프로그램을 완성하는 기법
- 캡슐화 : 정보 은닉과 관련되어 있다. 객체가 가지고 있는 정보를 공개하거나 비공개하는 기술
- 상속 : 객체지향언어는 객체들이 트리구조를 가지며 관리되므로 상하 관계를 가지며 상위 객체의 정보를 하위 객체에게 전달하는 기술
- 다형성 : 같은 데이터 혹은 기능의 호출인데 결과 값이 달라지는 기술
3) 메모리 자동관리를 한다.
- 자동으로 불필요한 메모리를 비우고 관리해준다
(개발자는 메모리관리에 신경쓰지 않아도 된다. )
4) 함수적 스타일 코딩 지원
- 함수적 스타일 코딩 방식인 람다식(Lambda Expressions) 지원
- 코드 간결하게 작성 가능
- 컬렉션 요소를 필터링, 매핑, 그룹핑, 집계 처리시 주로 사용
5) 멀티 스레드(Multi-Thread) 쉽게 구현 가능
- 동시에 여러 가지 작업을 할 경우
- 대용량 작업을 빨리 처리할 경우
6) 동적 로딩(Dynamic Loading) 지원
- 미리 객체를 만들어 놓지 않고 필요한 시점에 동적 로딩해 객체 생성
- 유지 보수 시 특정 객체만 쉽게 수정 및 교체해 사용
7) 막강한 오픈 소스 라이브러리 풍부
8) 다양한 애플리케이션 개발 가능
JDK = JRE + 개발도구(컴파일러 등)
- 프로그램 개발하고 실행하기 위해 설치
JRE = JVM(실행소프트) + 표준 클래스 라이브러리
- 자바 프로그램을 실행만 할 경우 설치
자바 실행하기 위해 JDK 먼저 설치하고, 환경변수 설정해줌(JAVA_HOME, PATH 등)
환경변수 설정 후 cmd 창 열어서 java -version 입력하여 버전 확인
컴파일러 버전 확인은 cmd에 javac -version
소스 작성에서부터 실행까지
메모장으로 .java 파일을 만들고(만들때 txt 형식말고 모든파일로 바꾸고 만들어야함)
해당 파일이 있는곳의 위치에서 cmd창 실행하여 javac Hello.java 입력하면 class 파일 생성됨
실행할 때는 java Hello 처럼 파일이름 입력하면 실행됨
이클립스 설치할때 설치형은 여기저기 흩어져서 이동시켜 사용할때 안될수도있음
zip 파일 형태로 사용하는게 좋음
정리
인터넷 : 컴퓨터를 하나의 통신망으로 연결해주는 서비스
웹 : 인터넷 서비스를 활용해서 정보를 주고 받을 목적의 서비스
웹 개발자 : 웹 서비스를 만들어내는 사람
프로그래밍 언어 : 사람이 컴퓨터에게 일을 시키기 위한 언어
컴파일 : 프로그래밍 언어로 이루어진 소스파일을 기계어로 변환하는 과정
컴파일러 : 컴파일 과정을 처리하는 소프트웨어
클래스파일 : 얼추기계어, 소스코드를 컴파일러로 변환하여 얻어지는 바이트코드 파일
JDK : JRE와 컴파일러를 가지고 있는 자바개발도구, 자바로 개발해서 실행하기 위해서.
JVM의 역할 : 클래스 파일을 운영체제에 맞는 기계어로 변환하여 실행
소스파일이 실행되기까지의 과정 :
1. 소스파일 작성
2. 컴파일
3. 클래스 파일을 JVM으로 실행
'Java' 카테고리의 다른 글
[Java] 산술연산자, 증감연산자, 비교연산자 (0) | 2024.07.21 |
---|---|
[Java] 변수와 타입 (0) | 2024.07.20 |
[Java] BufferedReader, BufferedWriter (0) | 2024.06.29 |
[Java] 숫자로 된 char를 int로 변경 Character.getNumericValue() (0) | 2024.06.28 |
[Windows] 윈도우 10 JDK 17 설치 & 환경변수 설정 & 이클립스 설치 (0) | 2024.06.28 |