이클립스 IDE의
"for Java Developers" 버전은 자바 코드를 작성하고 실행하는 데 필요한 기본적인 기능만 들어있는 가벼운 버전이다.
반면, "for Enterprise Java Developers" 버전은 웹 개발에 필요한 추가적인 기능과 도구를 제공한다.
IDE란 통합 개발 환경(Integrated Development Environment, IDE)으로 코드 작성, 컴파일, 디버깅 등 프로그램 개발과 관련된 작업을 통합적으로 수행할 수 있는 소프트웨어이다. 대표적인 예로 이클립스 외에도 IntelliJ IDEA, Visual Studio 등이 있다.
비슷한 개념으로 코드 에디터라는 소프트웨어도 있다. IDE보다 가볍고, 코드 작성과 관련된 기본적인 기능을 제공한다.
예로는 VS Code 등이 있다.
참고로, 간단한 프로그램은 꼭 IDE나 코드 에디터가 아니더라도 본질적으로 메모장과 같은 텍스트 편집기에서도 작성할 수 있다. 예를 들어, 텍스트 편집기로 작성한 코드를 언어에 맞는 파일 확장자(예: .java, .py)로 저장한 뒤, 명령 프롬프트(cmd)에서 방식에 맞게 컴파일 및 실행하면 된다.
Java의 기본 형식
자바 코드는 무조건 클래스 안에 작성되어야 한다.
실행(run)의 시작점은 main 함수이다. (자바 애플리케이션이 실행될 때 가장 먼저 탐색됨)
public class ClassName {
public static void main(String[] args) {
// 코드 작성
}
}
따라서 연습할 때는 이 main함수 내에 코드를 작성하면 된다.
형식을 조금 살펴보자.
public > 이 메인함수에 접근가능해야 하므로 public 접근제어자를 사용.
static > (java의 메모리 영역 관련 개념이라 추후 다룸.)
void > return값이 따로 필요없음.
String[] args > 메인함수 실행시 데이터가 필요할 수 있으니 String 배열을 인자(arguments)로 받음.
예를 들어 자바프로그램 실행시 명령어 뒤에 데이터를 java -.class hello im devsung 이렇게 붙혀주면
args배열 안에 "hello" "im" "devsung" 문자열이 채워져 args[n]을 활용할 수 있는 것이다.
프로세스와 스레드
동작 중인 프로그램은 프로세스(Process)라고 한다.
맥에서 활성 상태 보기를 열거나, 윈도우에서는 작업 관리자를 확인하면 실행 중인 프로세스들이 표시된다.
각 프로세스는 하나 이상의 스레드(Thread)를 포함하며, 일정량의 자원(CPU, 메모리 등)을 사용하고 있다.
앱의 모든 스레드가 종료되면 해당 앱도 종료된다.
멀티스레드를 사용하면 한 프로세스 내에서 두 가지 이상의 작업을 동시에 수행할 수 있다.
연습할 때는 싱글 스레드 환경이 익숙하겠지만, 일반적으로 앱은 멀티스레드로 구성된다.
자바는 멀티스레드를 지원하며, 이를 통해 동시 작업 처리가 가능하다 (싱글 스레드 언어 중에는 대표적으로 JavaScript가 있다.)
참고로, 자바에서의 main 함수도 하나의 스레드로 동작한다.
(자바 애플리케이션이 실행되면 JVM은 기본적으로 메인 스레드를 생성하고, 이 스레드가 main 함수를 실행)
자바 애플리케이션은 여러 클래스의 집합으로 구성되는 객체지향 언어이다.
클래스 이름은 대문자로 시작하는 것이 관례이다. 자바로 작성된 파일은 저장될 때 .java 확장자가 자동으로 붙는다.
자바 소스가 기계어로 변환되는 과정
자바는 컴파일 언어이다. (비교군으로는 인터프리터 언어인 python이 있다.)
자바 소스 파일(~.java)은 다음과 같은 과정을 거쳐 컴퓨터가 처리할 수 있는 기계어로 변환된다:
- 자바 소스 파일(~.java)을 컴파일러(javac.exe)가 바이트코드 파일(~.class)로 변환한다.
- 생성된 바이트코드 파일(~.class)을 JVM(자바 가상 머신, java.exe)이 실행하면서 최종적으로 기계어로 변환한다.
- 변환된 기계어가 컴퓨터의 메모리에 적재되어 실행된다.
메모장에서 자바 소스를 실행하는 법
메모장을 사용하여 자바 소스를 작성하고 실행해보면 위 과정을 더 명확히 이해할 수 있다:
- 간단한 자바 소스를 작성한다. 클래스와 메인 함수(main) 안에 로직을 입력한 후, 파일을 저장한다. (.java로 저장됨)
- 명령 프롬프트(cmd)를 열고 해당 파일이 있는 위치로 이동한다.
- 다음 명령어로 소스를 컴파일한다 javac 파일명.java 이 명령을 실행하면, 동일한 위치에 바이트코드 파일(파일명.class)이 생성된다.
-
java 파일명.class 명령어로 파일을 실행한다.이 과정에서 JVM이 바이트코드를 기계어로 변환하며, 프로그램이 실행된다.
빌드란?
빌드는 소프트웨어를 바로 실행(run)할 수 있는 상태로 만드는 과정을 말한다. 컴파일을 포함한 일련의 작업이 빌드에 해당한다. 위에서 설명한 자바 소스 파일을 컴파일하고 실행하는 과정도 빌드라고 할 수 있다.
로컬 개발 환경에서는 저장 시마다 자동으로 빌드되도록 설정하면 이후 바로 실행이 가능하다.
(자동 빌드 대신 수동 빌드로 설정할 수도 있다.)
배포 과정에서도 빌드라는 용어를 사용한다. 이 경우, 프로그램을 누구나 실행할 수 있도록 서버에 업로드하는 작업까지 포함한다.
문법을 공부할 때는 주로 결과를 콘솔에 출력하는 간단한 로직을 실행하여 확인하는 방식으로 진행했다.
하지만 웹 개발같은 복잡한 애플리케이션의 경우, 프로젝트를 웹서버에서 구동하여
브라우저를 통해 리소스를 요청하고 응답받는 형태로 동작한다.
서버 컴퓨터는 요청에 응답해주는 서버 프로그램이 설치된 컴퓨터다.
서버를 구동(run)한다는 것은 이 서버 프로그램을 실행하는 것을 의미한다.
로컬호스트
개발 및 테스트 환경에서는 내 컴퓨터를 서버로 사용할 수 있다.
localhost는 내 컴퓨터에서 실행 중인 서버를 가리키며, 내 컴퓨터에서 요청된 경우에만 응답이 가능하다.
실제 운영 환경에서는 24시간 가동 가능한 서버 컴퓨터(모니터가 필요 없는 환경)에 프로그램을 배포하여 실행된다.
'자바' 카테고리의 다른 글
싱글톤패턴 (0) | 2024.12.13 |
---|---|
static (0) | 2024.12.11 |
JAVA (JVM) 메모리 구조 1 (1) | 2024.12.10 |
클래스 , 객체 , Object , 상속 , 오버로딩, 오버라이딩 , lang패키지 (1) | 2024.11.30 |
JDK, JRE, JVM / JAR, WAR (3) | 2024.11.29 |