java 는 현재 대표적인 프로그래밍 언어중 하나이다.
C나 C++과 비슷한 표기법을 가지나, 포인터라는 개념이 없어 보다 다루기 쉽다.
특징
1. 객체 지향
객체 지향이란 프로그램의 기능을 그룹별로 나누고, 조합하여 프로그램을 작성하는 것을 말한다.
Java는 객체지향 언어로 보다 복잡하고 높은 수준의 프로그램을 만들수 있다.
2. 호환성
보통 프로그램은 운영체에따라 동작이 다른데, JAVA 프로그램은 Java VM이라는 실행환경만 있으면 어떤 운영체제에서도 실행 할 수 있다.
3. 개발활경이 좋음
다른 언어들도 그렇지만 JAVA는 더 풍부한 기술을 포함하는 라이브러리들을 표준으로 이용할 수 있다.
Java 로 만들수 있는 애플리케이션의 종류
1. CUI 애플리케이션
명령 프롬프트나 MS-DOS 프롬프트처럼 문자 기반의 실행환경을 CUI(Character User Interface)라고한다.
대부분의 프로그램들의 기본형이다.
2. GUI 애플리케이션
요즘 컴퓨터의 주류를 차지하고있는 그래픽 실행환경을 GUI(Graphic User Interface)라고한다.
JAVA를 이용하여 Windows 애플리케이션 같은 프로그램을 만들 수 있다.
3. Java applet
Web 브라우저 상에서 동작하는 프로그램이다.
HTML 안에서 애플릿을 지정하면 Web 서버로부터 자동으로 다운로드되고 클라이언트의 Web 브라우저상에서 동작한다.
4. Java Servlet
Web 서버 상에서 동작하는 프로그램이다.
서버에서 동작하는 다른 프로그램에는 CGI가 있는데, 이보다 효율적이기때문에 많이 사용된다.
서버에서 실행되고, 실행결과를 클라이언트의 Web 페이지로 보내준다.
5. JSP (Java Server Page)
HTML 문서와 Java 프로그램을 조합하여 동적인 Web 페이지를 간단하게 만들 수 있다.
서버에서 실행되고 그 결과를 클라이언트에 보내주는데, HTML 문서 속에 Java 코드를 삽입하는 형태로 작성한다.
6. Java Beans
Java 로 작성한 프로그램을 부품(컴포넌트)로 다루는 것을 말한다.
이 컴포넌트들을 조합하여 애플리케이션을 간단하게 만들 수 있다.
Java VM (Virtual Machine)
Java VM은 Java로 작성된 프로그램을 실행하기 위한 환경이다.
Java 프로그램의 실행파일은 플랫폼에 의존하지않는 바이트 코드로 만들어지며, Java VM은 이 바이트 코드를 기종에 맍는 고유의 코드로 변환하여 실행한다.
이런 기능 덕분엔 Java VM만 있으면 어떤 기종이나 OS에서도 Java 프로그램을 실행할 수 있다.
Java 프로그램 개발 툴
초기 Java 에서는 SE, EE, ME 가 있었고 현재는 더많은 도구와 프레임워크가 존재한다.
- JavaFX
- Java SE와 함께 사용되는 GUI 프레임워크로, 데스크톱 애플리케이션과 리치 클라이언트 애플리케이션 개발에 사용된다.
- Java Swing의 대체로도 사용되며, 미디어, 애니메이션, 3D 그래픽 같은 기능을 지원한다.
- Spring Framework
- 기업용 애플리케이션 개발을 위한 오픈소스 프레임워크이다.
- Spring Boot, Spring MVC, Spring Data와 같은 확장 모듈로 마이크로서비스, REST API, 웹 애플리케이션 등을 쉽게 구축할 수 있다.
- Android Development
- Java는 Android 앱 개발에서 중요한 언어로 사용되며, Android Studio를 통해 Java로 Android 애플리케이션을 개발할 수 있다.
- 현재 Kotlin이 널리 사용되고 있지만, Java도 여전히 안드로이드 앱 개발에서 주요 언어로 사용된다.
- Apache Maven 및 Gradle
- Java 애플리케이션의 빌드, 의존성 관리, 배포를 자동화하는 빌드 도구이다.
- Maven은 XML 형식의 POM 파일을, Gradle은 스크립트형 빌드 파일을 사용하여 빌드 설정을 관리한다.
- Jakarta EE (Java EE의 후속 프로젝트)
- Java EE가 Eclipse Foundation으로 이전되어 Jakarta EE로 재브랜딩되었다.
- 엔터프라이즈 환경에서 안정적인 웹 애플리케이션과 서버 애플리케이션을 개발하는 데 사용된다.
- Micronaut 및 Quarkus
- 경량화된 마이크로서비스와 클라우드 네이티브 애플리케이션을 위한 프레임워크로, 빠른 시작 시간과 메모리 사용 효율성이 특징이다.
- GraalVM과의 호환으로 네이티브 이미지 빌드를 지원해 Java를 서버리스 환경에서도 효과적으로 사용할 수 있다.
- JUnit 및 TestNG
- Java 애플리케이션의 단위 테스트와 통합 테스트를 위한 테스트 프레임워크이다.
- 다양한 테스트 라이브러리와 함께 사용하여 Java 프로그램의 테스트 자동화에 활용된다.
- Apache Kafka 및 ActiveMQ
- Java와 함께 사용되는 메시징 큐 및 스트리밍 플랫폼이다.
- 분산 메시지 처리 및 이벤트 기반 아키텍처를 구축할 때 유용하다.
- Hibernate ORM
- Java 애플리케이션에서 데이터베이스와의 상호작용을 단순화해주는 ORM(Object-Relational Mapping) 프레임워크이다.
- JPA(Java Persistence API)를 구현하여 객체와 관계형 데이터베이스 간의 매핑을 처리한다.
기본적인 프로그래밍 흐름
우선 Java 를 기술하기위한 텍스트 에디터와 에디터를 통해 완성된 소스 프로그램을 바이트 코드로 변환하는 컴파일러가 필요하다.
컴파일러는 javac라는 이름으로 SDK에 포함되어있다.
또한 프로그램을 실행하기 위해서는 java라는 프로그램이 필요한데 이는 JRE에 포함되어있다.
프로그램 기술 약속
1. 다문자와 소문자를 명확히 구별해서 사용해야한다.
2. 전각 스페이스 사용에 주의하자
3. 주석은 /**/ 이나 // 를 사용하자
4. 예약어를 기억하자
데이터 유형 관련 | boolean | byte | char | short | int | long | float | double | void |
제어문 관련 | default | if / else | switch | case | for | do / while | break | continue | return |
특수 예약어 | instance of | null | true | false | 접근 제어자 | public | private | protected | |
클래스 및 객체 관련 | interface | class | extends | new | this | implements | super | ||
예외 처리 관련 | try / catch | throw(s) | finally | strictfp | 패키지 | package | import | ||
기타 구조 관련 | abstract | assert | enum | static | final | synchronized | native | transient | volatile |
🛠️ 용어 정리
CGI (Common Gateway Interface)
웹 브라우저의 요구를 받아 웹 서버가 실행하는 프로그램 인터페이스이다.
스크립트 언어는 Perl 로 많이 기술되는데, CGI 프로그램은 HTML 문을 생성하고, 웹서버는 그것을받아 브라우저에 넘긴다.
CGI 프로그램을 사용하면 웹 페이지의 접근 횟수나 볼때마다 다른 정보를 웹페이지에서 보여줄 수 있다.
컴포넌트(Component)
큰 프로그램에서 식별가능한 '부분'으로 특정 기능이나 관련된 기능들의 조합을 제공한다.
프로그래밍 설계에서 시스템은 모듈(독립된 하나의 소프트웨어 또는 하드웨어)로 구성된 컴포넌트로 나뉜다.
애플리케이션 (Application)
1. 애플리케이션 프로그램에서는 응용프로그램의 줄임말을 의미한다
사용자 또는 다른 응요프로그램에게 특정한 기능을 직접 수행하도록 설계된 프로그램이다.
예 : 워드프로세서나 웹 브라우저, 통신 프로그램
2. 정보기술에서 애플리케이션은 기술, 시스템 및 제품을 사용하는것을 말한다.
자바 컴파일러 (javac)
.java인 자바 소스 프로그램 파일의 확장자를 .class 인 자바 바이트코드로 컴파일해준다.
명령행 인자는 자바 소스프로그램 파일의 이름이다.
이 .class 파일은 JVM(Java Virtual Machine)에서 실행될 수 있는 바이트코드로 변환된 파일이다.
javac 명령은 자바 소스 파일을 컴파일하는 역할을 하며, 컴파일 후 생성된 .class 파일은 플랫폼에 독립적이다.
javac 명령의 뒤에 오는 인자는 컴파일할 자바 소스 파일의 이름이다.
예를 들어, javac HelloWorld.java라고 입력하면, HelloWorld.class 파일이 생성된다.
자바 인터프리터 (java)
명령행 인자로 주어진 클래스 파일에 있는 바이트코드를 해석하고 실행해준다.
주의할 점은 확장자를 생략해야한다.