본문 바로가기

개발기술/Java

Java 코딩 구현 - 개발환경설정

 

자바의 특징 : "Programmers Write Once, Run Anywhere(WORA)" 이는, JVM이라는 Java 가상머신 위에서 동작하기 때문에 가능하다. 가상머신이란 프로그램의 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것임. JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것. JVM은 JAVA와 OS사이에서 중개자 역할을 수행. JAVA가 OS에 구애받지 않고 재사용을 가능하도록 함. 메모리관리, Garbage collection을 수행함.

 

Java의 장점

- 간결한 객체지향 언어

- Garbage Collection을 통한 메모리 관리

- 플랫폼에 종속적이지 않고, 한번 컴파일 된 프로그램은 어느 운영체제나 환경에서 동일하게 실행을 보장

- 많은 오픈소스 프레임워크를 통해 생산성증가

 

Java의 단점

- 처리속도가 중요한 프로그램에는 맞지 않음

- 최근 나오는 프로그래밍언어에 비해 간결하지 못함

- 하드웨어를 직접 컨트롤할 수 없음

- GUI가 많은 프로그램에는 적합하지 않음

 

Java 동작원리

JDK와 JRE

- JDK(Java Development Kit)
Java를 개발함에 있어 필요한 모든 집합체
JRE를 포함하고 있으며, 그 외에 javadoc, 컴파일러를 포함(javac)

 

- JRE(Java Runtime Environment)
Java를 실행함에 있어 필요한 환경을 포함
JVM을 포함하고 있으며, 그 외에 java class library, java 명령어들을 포함

 

JVM

- JVM(Java Virtual Machine)
Java 소스 코드로부터 생성되는 binary파일 (.class)를 실행시킬 . 수있음

jVM은 자바 클래스 로더(Class Loader)와 자바 실행엔진(Exectuion Engine)에 의존

Java로 작성된 프로그램의 메모리 관리 및 최적화를 수행

한번 컴파일된 파일은 어떤 운영체에서도 같은 JVM환경에서는 동일하게 동작할 수있음(WORA)

 

 

 

자바 표준 스펙 :  자바는 이렇게 만들어야 한다는 설계도이며, 문서이다. 이 표준 스펙을 기반으로 여러 회사에서 실제 작동하는 자바를 만든다. 자바 표준 스펙은 자바 커뮤니티 프로세스(JCP)를 통해 관리된다.

자바 구현 : 여러 회사에서 자바 표준 스펙에 맞추어 실제 작동하는 자바 프로그램을 개발한다. 각각 장단점이 있다. 예를 들어 Amazon CorrettoAWS에 최적화 되어 있다.

자바소스코드 실행순서 : 자바 소스 코드를 개발자가 작성한다. 자바가 제공하는 javac 라는 프로그램(컴파일러)을 사용소스 코드를 컴파일 하여 java class`파일이 생성된다. 이 과정에서 자바 소스 코드를 바이트코드로 변환하며 자바 가상 머신에서 더 빠르게 실행될 수 있게 최적화하고 문법 오류도 검출한다.  완성된 class 파일을 자바 가상 머신(JVM)인 `java` 라는 프로그램으로 실행되면서 프로그램이 작동한다.

 

인텔리제이 역할 : 인텔리제이는 자바 코드를 실행 할 때 이 과정을 자동으로 처리해준다. 텔리제이에서 자바 코드를 실행하면 컴파일과 실행을 모두 한번에 모든 클래스를 대상으로 한꺼번에 처리한다. (단, 인텔리제에서 class 파일을 접속해보이면 소스코드처럼 보이나 실은 바이트코드가 decompile된 코드로 주석이 사라져있음)

 

 

The JDK : The JDK is a software development kit required to develop Java applications and applets by Oracle Corporation. It includes the Java Runtime Environment (JRE), an interpreter/loader (Java), a compiler (javac), an archiver (jar), a documentation generator (javadoc), and other tools needed to develop Java applications.

  • An applet : a type of Java program designed to be embedded and executed within a web browser or applet viewer environment, providing interactive features to web pages.`
  • Java Runtime Environment (JRE): This provides the libraries, the Java Virtual Machine (JVM), and other components to run Java applications and applets. Essentially, it's the environment in which Java programs run.
    • runtime : In the context of Java, "runtime" refers to the period during which a Java program is executing. The term can also refer to the software components necessary for running Java applications, most notably the Java Runtime Environment (JRE).
  • Java Compiler (javac): Converts your Java code into bytecode.
  • Java Virtual Machine (JVM): A part of JRE that runs the bytecode.

 

 

인텔리제 기능

설정

  • 보일러템플릿 자동등록 : setting - live template - 추가후 자바언어로 설정 ; test

 

단축키

  • psvm : typein public static void main(String[] arg){} 의 단축키
  • sout : typein System.out.println
  • soutv : printout last declared variable
  • ctrl + R : 방금 실행한 코드 재실행1
  • ctrl + shit + R : 현재코드 실행
  • ctrl + shift + left or right : select entire line
  • iter : to create enhanced for loop 

이동

  • F2 : next highlited error
  • command +b : 멤버변수 혹은 메서드에 올려놓고 사용시 연관된 클래스로 이동
  • command + O : goto class or directory
  • Command + E : change class window
  • option + fn +F1 : 현재열려있는 클래스창의 폴더위치 찾기

 

도입자

  • command + option+ v = return 값을 담을 variable을 도입
  • option+command+m : extract method로 메소드로 도입
  • option+command+N : inline variable로 변수축약
  • command+shit+T : 정의된 함수를 test 진행함
  • command + N : 클래스 등 새로운 개체 만들기
  • control+P : checking parameter
  • control + enter
  • option + arrowup : 코드확장선택
  • ctrl + O : 메서드 오버라이딩 생성
  • command + / : 선택된 코드들 주석처리

정리

  • control+option+O : import문 최적화
  • option +command+L : 작성된 코드문법 최적화
  • option +command+N : Inline Varible로, 불필요하게 선언된 변수를 다른 함수의 매개변수로 정리해준다.
  • shit + command + enter : 현라인의 미완성코드 완성
  • option+ enter  : 추천 정정사항 실행 ; 생성되지 않고 호출된 method를 해당 클래스로 돌아가서 method 정의하기, import 되지않은 클래스 import하기, :Show Context Actions, 
  • /** : parameter와 return값에 대해서 주석달기
  • Setting - code Style - java - hardwrap at 80 / wrap on typing yes : 코드가 특정 글자수를 넘을 시 자동줄바꿈
  •  

 

수정

  • command +backspace : 한줄지우기
  • shift+fn+f6 : 변수명 재설정
  • command + D : duplicate selected line
  • command + backspace : deleted selected line