반응형
1. JAVA 설치하기 (자바 프로그램 개발을 위한 환경 설정)
- 자바를 이용해 프로그램을 만들 수 있는 환경 개발 설정하기
- JDK(java development kit) 설치하기
- JDK 안에는 JRE(java runtime environment) 포함
- JRE 안에는 JVM(java virtual machine) 포함
- 즉,
- JRE만 설치한다면? JVM만 설치하겠다 → JAVA 프로그램을 실행만 하겠다는 의미
- JDK 를 설치하면 → JRE → JVM도 함께 설치됨
- JVM은 자바 애플리케이션을 실행하는 데 필요한 가상 머신으로, 자바 애플리케이션을 컴파일한 바이트코드를 실행시키는 역할임
[step1] JDK 설치
- oracle 회사에서 다운 가능
- https://www.oracle.com/ 접속
- Products > Java > Java products and technologies > Java SE(standard edition) > Download Java now > Java SE Development Kit 11.0.16.1 > x64 Installer (window기준) 다운
- Java SE (standard edition): 일반적인 프로그램 만들때 사용
- Java ME (microedition edition): 기계를 제어할 때 필요한 기능들을 제공
- JDK의 버전
- 최신버전보다 하위버전 이용하기 (java17, 18 : spring의 어려움)
- 만약 JDK 버전이 여러개 설치되어 있다면? 환경변수설정 필요 → 콘솔이용!
- java8 : spring의 어려움
- java11 : spring 이용가능 Java SE Development Kit 11.0.16.1 (220914기준)
[step2] JDK 설치 확인
- cmd(콘솔 실행)
javac -version
- bin : 명령어들 집합
- lib : 기본적으로 필요한 라이브러리 제공
- lib > jrt-ts.jar : 많은 class들 존재
- .jar : java archive
- 자바는 class들을 이용해 프로그램을 만든다!!
- class로 객체를 만들고, 객체로 메소드를 호출해서 원하는 기능을 제공받아 프로그램을 만든다..!
- lib > jrt-ts.jar : 많은 class들 존재
2. 콘솔에서 자바 프로그램 실행하기
HelloWorld.java
[step1] 소스파일(source file)생성
- class 작성하기
- source file = text file
- 메모장에 작성 가능 (행번호 없음)
- notepad++ (행번호 있음, 다운받기) : 관리(sm업체)할 때 많이 이용 / vs 개발(si업체)
public class 클래스명{}
- 파스칼 표기법 권장 : 조합된 단어의 첫문자를 무조건 대문자로 작성하는 표기법
- HelloWorld o / Helloworld x / helloworld x
- ex) 클래스이름 , 인터페이스이름 , enum , record , annotaiton ..
//파스칼표기법 //블럭
public class HelloWorld {
//Field
//Constructor
//Method (필수!!!!!) - 없으면 호출못해요!!!!
//=> main Method (자동으로 호출되어 명령이 실행됨)
public static void main(String[] args){}
}
//클래스명 작성 시 구체적으로 작성하기!!! 어떤person..?
public class Person{ }
public class Dog{ }
[step2] 클래스(class) 작성
- 클래스란? Java 프로그램을 개발하기 위해 사용하는 기본 단위 - 자료형
- 클래스의 구성요소 : Method(필수) , Field(선택) , Constructor(선택)
- 클래스에는 반드시 main 메소드를 생성해야 프로그램 실행 가능
- main 메소드는 딱 1개만 존재하며, 자동으로 호출되어 명령이 실행됨
public class HelloWorld{
//main method(프로그램 실행가능하게 해줌)
public static void main(String[] args) {
//명령문의 작성 순서 : 입력명령 -> 처리(계산)명령 -> 출력명령 (순차적으로 처리됨)
//프로그램은 단순하게 만들어야함!!
//그래야 속도 빠르고, 유지보수 쉬움
명령;
명령;
명
령;
명령;
...
//자바의 알고리즘
//=> 알고리즘은 수학에서 파생됨
//=> 자바의 알고리즘은 클래스에서 제공해줌
//=> 손 쉽게 프로그램 만들 수 있음..
}
}
[step3] 클래스(class) 내 메인메소드에 자바명령 작성
public class HelloWorld{
//main method
public static void main(String[] args) {
//자바는 객체의 메소드를 호출하는 명령이 가장 많음
//ex. 출력 기능을 제공하는 메소드 호출
//=> System class 안 out 객체가 자진 요소들 중 print메소드 호출
//출력
System.out.print("출력대상");
//출력후 엔터
System.out.println("출력대상");
//System클래스의 out객체의 printf메소드
System.out.printf("");
}
}
[step4] 만든 소스파일 저장
- ctrl + s
- 소스파일은 반드시 클래스명.java 형식으로 저장 → HelloWorld.java
- 메모장에 저장하고 콘솔에서 실행하기 위해서는 인코딩:UTF-8 대신 인코딩:ANSI으로 저장 필요
- 참고) window의 명령 프롬프트는 UTF-8의 한글 인식 못함ㅠㅠ
그래서 명령 프롬프트에서 한글을 출력하기 위해서는 ANSI로 변경해야함, 영어만 작성했으면 UTF-8괜찮음 - IDE 이클립스에서는 상관없음
- 참고) window의 명령 프롬프트는 UTF-8의 한글 인식 못함ㅠㅠ
[step5] 소스파일 컴파일(Compile)
- 컴파일(Compile)이란? 인간 중심으로 작성된 프로그램 언어를 기계어(Machine language)로 변환하는 것
- 기계어: 0 , 1
- 콘솔에서 java를 컴파일 해주는 명령어 작성
- 소스파일의 프로그램에 잘못된 문법이 존재할 경우 에러 발생함
- 에러가 발생하면 수정 후 다시 컴파일하기
- 컴파일이 에러없이 성공적으로 완료되면 이진코드(ByteCode)가 저장된 클래스 파일(클래스명.class)이 생성됨
- 클래스명.class
- 프로그램이 실행할 때 컴퓨터가 읽는 파일(클래스파일)
- 프로그램 실행을 위해 배포되는 파일
- 즉, 프로그램을 배포할 때 클래스명.class을 주는 것임
- 소스코드 클래스명.java는 주는 것 아님 (개발자가 가지고 있는 것)
- 클래스명.class
(base) jaeheela@Jaehees-MacBook-Air ~ % cd /Users/jaeheela/Desktop/Java/java-1/src/basic
## javac : 소스파일을 컴파일하기 위한 명령어
(base) jaeheela@Jaehees-MacBook-Air basic % javac ArrayApp.java
[step6] Java프로그램 실행 (JVM이용)
- JVM (자바를 실행하기 위한 가상 기계) 위에서 동작하는 것이 자바의 특징 중 하나
- JVM 을 이용해 클래스파일을 제공받아 프로그램을 실행함
- JVM으로 자바 바이트코드(.class 파일)를 OS에 특화된 코드로 변환하여 실행함
- 리얼플랫폼(운영체제) 위에 가상의플랫폼(JVM)을 얹어 그 위에 자바언어가 동작함
- 참고로 자바 외 다른 언어들이 동작하는 방법은 운영체제와 링크 작업을 거쳐야함 → exe만듦(실행파일)
- 자바는 JVM을 이용하므로 모든 운영체제에 동작하는 장점이 있음, 하지만 실행속도가 느림
## ArrayApp 은 파일명이 아닌 클래스명이다.
(base) jaeheela@Jaehees-MacBook-Air basic % java ArrayApp.java
num = [I@2b71e916
==============================================================
num[0] = 0
num[1] = 0
num[2] = 0
==============================================================
배열 요소의 갯수 = 3
==============================================================
num[0] = 10
num[1] = 20
num[2] = 30
==============================================================
su1[0] = 10
su1[1] = 20
su1[2] = 30
==============================================================
10
20
30
==============================================================
합계 = 832
==============================================================
30~60 범위의 요소 갯수 = 4
==============================================================
(base) jaeheela@Jaehees-MacBook-Air basic %
3. IDE설치하기
1) 이클립스
[step1] 이클립스 설치
- Java 언어를 이용하여 프로그램을 쉽게 개발하기 위해 제공되는 툴(Tool)
- 특징 : 확장성이 좋음, plug-in
- download > Get Eclipse IDE 2022‑06 (220914기준 최신임) > Download x86_64대신 Download Packages 클릭 > Eclipse IDE for Enterprise Java and Web Developers > Windows x86_64 / macOS x86_64
- Eclipse IDE for Java Developers : 웹프로그램 못만듦, 플러그인에 나중에 문제 생김
- Eclipse IDE for Enterprise Java and Web Developers 설치 : 웹프로그램 만들 수 있음, 대형프로젝트에 최적
[step2] [eclipse.ini 설정파일] 이클립스의 eclipse.ini 파일의 vm 환경값 변경 → JDK 환경변수 설정
- 잘못 건들면 eclipse에서 java실행이 안되니 함부로 건들지 말기
ini 메모장
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.500.v20220509-0833
-product
org.eclipse.epp.package.jee.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.defaultAction
openFile
--launcher.appendVmargs
// 이클립스가 기본적으로 프로그램을 실행하기 위해 사용하는 jre 명령어들 위치
// (위 경로를 아래 경로로 변경)
// 이클립스가 open jdk 이용하지 않고 bin폴더 안에 들어있는 명령어들 가지고 동작
- vm
(기본) plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.3.v20220515-1416/jre/bin
(변경) C:\Program Files\Java\jdk-11.0.16.1\bin
- vmargs
-Dosgi.requiredJavaVersion=11
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-Dsun.java.command=Eclipse
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=11
-Dosgi.dataAreaRequiresExplicitInit=true
-Dorg.eclipse.swt.graphics.Resource.reportNonDisposed=true
-Xms256m
-Xmx2048m
--add-modules=ALL-SYSTEM
[step3] 이클립스 기본값 설정
1. workspace 경로 설정:
앞으로 만들 프로그램 파일들이 저장되는 폴더명
2. perspective 변경 :
프로그램 개발에 필요한 환경을 제공하기 위한 환경
perspective에 따라 view와 메뉴들이 다름
현재 java perspective로 변경
나중에 javaEE(default) perspective로 변경 예정
이클립스 내 오른쪽 상단 아이콘 3개! (그래픽 메뉴)
차레대로open perspective , javaEE perspective , java perspective
3. 자주 사용하는 view:
Package Explorer view : 자바 프로젝트를 구성하는 소스코드나 이미지 파일 같은 것들을 모아놓은 프로젝트 폴더
Navigator view : 프로젝트 폴더를 있는 그대로 보여줌
4. view들 reset하는법:
window > perspective > reset perspective
5. view들 add하는 법:
window > Show View : 추가하고 싶은 뷰들 설정할 수 있음
6. workspace 환경 설정:
preferences 접속 (이클립스 내 환경설정 변경할 때 사용)
window > preferences > General
7. 글꼴변경:
window > preference > General > Appearance > Color and fonts > Basic > Text font > Edit> 나눔고딕코딩, 글꼴스타일,크기 변경
=> 나눔고딕코딩 글꼴 다운
8.인코딩변경 :
window > preference > General > workspace > utf-8로 변경
utf-8 : 한글조합형(가독성이 좋음)
MS949 :한글완성형(mac과 호환안됨)
2) 인텔리제이
3) 온라인 코드 에디터 : jdoodle
- 예시
public class MyClass {
public static void main(String args[]) {
int x = 10;
int y = 25;
int z = x+y;
System.out.println("Sum of x+y = " + z);
}
}
//Sum of x+y = 35
4. 이클립스 내 Java 프로젝트 생성 후 파일 작성 후 실행하기
basic > FirstEclipseApp.java
[step1] Java 프로젝트(Project) 생성
특별한 목적의 프로그램을 개발하기 위한 시스템을 제공하는 영역
- 방법1
Package Explorer > Create a Java Project > Project Name설정: java-1 > Don't create module 프로젝트가 여러개 있지 않은 이상 모듈 만들 필요 없음 > Finish - 방법2
Package Explorer > 마우스 오른쪽 버튼(팝업메뉴) > New > Java Project > Project Name설정 > Finish
● 패키지란?
동일한 목적의 class들 묶음 : 동일한 목적의 class를 하나의 그룹으로 묶어 관리하기 위한 이름
● src 패키지폴더
src 패키지 폴더에 패키지 생성 후 소스파일 작성하기
Package Explorer > 프로젝트 > src > 마우스 오른쪽 버튼(팝업메뉴) > New > Package > Package Name설정: basic > Finish
● 패키지에 패키지 소스 파일 작성
Package Explorer > 프로젝트 > src > 패키지 안에 마우스 오른쪽 버튼(팝업메뉴) > New > class > class Name설정 : FirstEcilpseApp > Finish
● 파일 raname하는법
F2 Package Explorer는 탐색기, 단축키와 비슷
[step2, step3] mian메소드 생성 및 실행 명령 작성하기 (자동완성 기능 이용)
basic > FirstEclipseApp.java
- 이클립스 자동 완성 기능을 사용하여 프로그램 작성 권장 : Ctrl + space
- 식별자 또는 예약어에 대한 자동 완성 기능을 제공 , 단축단어에 대한 구문 완성 기능 제공 (약 40가지..)
//main 작성 후 Ctrl + space
public static void main(String[] args) {}
//sysout작성 후 Ctrl + space
System.out.println();
- 단축단어에 대한 구문 완성 기능 직접 만들기
- window > preference > Java > editor > templates > New > Name 또는 Pattern 설정하기 + context 설정하기 + insert Variable > cursor 설정하기
//sysout작성 후 Ctrl + space
System.out.print("${cursor}");
- FirstEclipseApp.java
package basic;
/*
프로그램명 : FirstEclipseApp
작성자 : 홍길동
작성일자 : 2022년 09월 14일
*/
//행복사 : [Ctrl]+[Alt]+[↑] 또는 [↓]
//행이동 : [Alt]+[↑] 또는 [↓]
/** 이클립스로 만든 첫번째 클래스 */
public class FirstEclipseApp {
/** JVM에 의해 자동 호출되는 특별한 메소드 */
public static void main(String[] args) {
//출력 메소드 호출
System.out.print("이클립스로 만든 첫번째 ");//행주석
System.out.println("프로그램입니다.");/* 범위주석 */
System.out.println("열심히 해봐요!!!");
}
}
//이클립스에서 만든 첫번째 프로그램입니다.
//열심히 해봐요!!!
[step4, step5] 이클립스 내 소스파일 저장과 컴파일
- 이클립스는 소스파일을 저장하면 자동으로 컴파일 처리해줌
- 소스파일 저장 : Ctrl + s
- Project > build Automatically 체크되어있다면? : 파일 저장만 하면 이클립스가 자동으로 컴파일해줌
[step6] 이클립스 내 소스파일 실행
- 자바 프로그램 실행 : Ctrl + F11
[step7] 이클립스 내 외부소스파일 가져오기
- 파일 복사 , 붙여넣기!
- 단, 소스파일 내 패키지 같아야함!!!
package basic;
5. JAVA 주석문
- 프로그램 실행에 영향을 미치지 않는 설명문
1) source 주석 : Java 소스파일에 대한 설명문
- 유지보수의 효율성 증가하므로 source코드의 주석문을 작성하는 것을 권장!
ex) 왜 이런 클래스를 만들었는지, 왜 이런 명령문을 썼는지, 왜 이런 식별자를 썼는지 작성.. - 행주석 : Ctrl + / (toggle기능)
// 설명문
- 범위주석: Ctrl + Shift + / (생성) & Ctrl + Shift + (삭제)
/* 설명문 */
2) API 주석: API 문서에 제공할 설명문
- 클래스 또는 메소드 앞부분에 API 주석문을 이용하여 설명 처리
/** 설명문 */
6. 자바 API문서의 개념
1) API 문서란?
- API문서를 만들 때 클래스와 메서드의 설명을 제공하기 위한 문서
- 클래스는 ~~다. 메서드는 ~~다 라고 적혀있는 문서
- 이클립스에서 API 문서에 접근하기
- Products > Java > Java products and technologies > Java SE(standard edition) > Download Java now > Java SE Development Kit 11.0.16.1의 online documentation > API documentation
- JDK 11 API문서 사이트로 접근하기
2) API 주석이란?
- API 문서에 제공할 설명문
- 클래스 또는 메소드 앞부분에 API 주석문을 이용하여 설명 처리
/** 설명문 */
- 우리가 만든 api 배포할 때 API문서도 함께 만들어야 함 (이클립스 내에서 API문서 만드는 법 search)
- java doc 명령 : 콘솔에서만 실행가능, 이클립스에서는 안돼
- !! 자바는 라이브러리에 제공되는 클래스들로 프로그램 만들음
7. JRE System Library
- JDK가 갖고 있음 (JDK설치 시 제공)
- 다양한 클래스들이 모여있음
- 라이브러리의 모임 = API
- 라이브러리에 대한 설명서 = API문서
- 만든 클래스를 배포하기 위해서는 API문서(클래스들의설명서)가 필요함
- Java API -> oracle 사이트에서 확인 가능
/** api문서 설명문*/
- JRE System Library이 없다면??
- public class App{} 사용불가능
- 이클립스 package explorer에서 확인 가능
8. 우리가 계속 사용하고 있었던 package
- JRE System Library > java.base 모듈 > java.lang 패티지 > String클래스, System클래스.. 등 다양한 클래스들을 그동안 사용하고 있었음
- 어떻게? JDK가 준 JRE System Library 덕분이죠~!
9. 콘솔에서 사용하는 자바 실행 명령어
1. javac - 자바 컴파일러 실행시키는 명령어 (class가 생성된다!!)
2. java - JVM을 실행하는 명령어 (자바프로그램을 실행한다!!)
3. javadoc - api문서를 만들어주는 명령어
//소스파일에 대한 api문서를 자동으로 만들어줌
javadoc 소스파일명
10. 자바의 객체지향프로그램
- 자바는 알고리즘으로 프로그램만드는 것이 아닌 객체를 가지고 프로그램을 만듦
- 문제를 객체의 메소드 가지고 해결함
- 어떤 문제를 해결하기 위해 다양한 형태의 프로그램을 만들지 않음
- 예를들어, 반올림하는 형변환을 이용하지 않고 Math클래스의 메소드 이용함
- 왜 객체지향 프로그램이 좋을까? 프로그램 만들기 편함!
- 그럼 알고리즘은 왜 공부하는 것…?
- 회사에서는 창의적인 사람을 원해서 알고리즘.. 시험공부하는 것임
- 알고리즘을 잘한다 = 창의적인사람이다 (논리적인사고력이 바탕)
- 알고리즘 잘 못해도 객체지향 이해를 잘 하면 자바 언어로 프로그램을 만들 수 있긴함 ex) 물리는 가설, 증명은 수학..!
11. 번외) 컴퓨터를 다루는 스킬을 쌓는 방법
1) 지금 사용 중인 시스템에 어떤 종류의 데이터 타입이 있는지 알아가기
- JAVA의 <데이터 타입>
- 기본형(primitive type) 8개 : 실제 값을 저장함
- 논리형 : boolean
- 문자형: char
- 숫자형
- 정수: byte short int long
- 실수: float double
- 참조형(reference type) : 객체의 주소를 저장함
- 기본형을 제외한 나머지들
- 문자열 : String
- StringBuffer
- List
- Map
- Set
- 사용자 정의 자료형
- 기본형(primitive type) 8개 : 실제 값을 저장함
class Animal{
private string food;
...
public void eating{
}
}
Animal cat;
//cat 변수는 Animal 자료형 변수이다
//cat 변수에는 Animal 자료형에 해당되는 값만 담을 수 있다
2) 각 데이터 타입별로 어떤 연산 방법이 있는지 알아가기
- JAVA의 <숫자와 연산>
public class Number {
public static void main(String[] args) {
//Operator
System.out.println(6 + 2); //8
System.out.println(6 - 2); //4
System.out.println(6 * 2); //12
System.out.println(6 / 2); //3
System.out.println(5 / 3); //1
System.out.println(Math.PI); //3.141592653589793
System.out.println(Math.floor(Math.PI)); //3.0
System.out.println(Math.ceil(Math.PI)); //4.0
}
}
반응형
'java > java' 카테고리의 다른 글
[java] 6. 배열(Array) (0) | 2024.04.11 |
---|---|
[java] 5. 제어문 (선택문, 반복문, 기타제어문) (2) | 2024.04.11 |
[java] 4. 변수(Variable)와 연산자(Operator) (0) | 2024.04.11 |
[java] 3. 자료형(DataType) (0) | 2024.04.10 |
[java] 1. JAVA의 개념 및 특징 (0) | 2024.04.10 |