자바(Java) 기본 정보 정리


* IDE
    - Eclipse, IntelliJ IDEA,  NetBeans


//===========
* 한글 깨짐 해결방법
    - *.java 파일을 UTF-8 로 저장하고 컴파일 옵션 조정
> javac.exe  -encoding UTF-8 Main.java
> java.exe Main


//===========
* 'IntelliJ IDEA' IDE 설정
    - 문서 UTF-8로 저장
    - File -> Project Setting -> Editor
            -> File Encodings
                - IDE Endoding : UTF-8
                - Project Encoding : System Default <-- 중요(UTF-8 아님)
                - Default encoding for propertied : UTF-8

    - 프로젝트 속성 -> Build -> Compiler -> Javva Compiler
        - Additional command line parameters :  -encoding UTF-8

    - idea.exe.vmoptions 파일 수정 - (사실 변화 없음)
C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1\bin\idea.exe.vmoptions 열어서 다음행 추가
        -Dfile.encoding=UTF-8


//===========
* 'IntelliJ IDEA' 에서 실행시 윈도우 창에서 한글 출력 에러(깨짐 현상)
    - 해결방법 : 프로젝 옵션중 Project Encoding 을 System Default로 바꿔야 함

    //참고
    - 컴파일에 javac.exe를 사용하지 않는다

    - java.exe 로 명령행에서 실행하면 한글 제대로 출력됨
    - GUI Designer나 jFormDesigner에서 만들어진 *.form 파일을 활용하면 한글 정상
    - AWT 사용시, *.java 파일에 쓴 한글 깨짐

    - Run 단계의 java.exe 옵션 변경
        - java.exe 실행 옵션에 -Dfile.encoding=UTF-8 있으니 글자깨짐
        - 옵션을 뺄려면 프로젝 옵션중 Project Encoding 을 System Default로 바꿔야 함


- 여러창 열기(Allow multi instance)
File -> Setting -> Appearance & Behavior -> System Settings
    -> Project Setting : Open project in new window


//==============
* JAR (Java 실행파일) 파일 만들기
    JAR.exe cfe Main.jar Main Main.class 필요한 클래스들...

* IntelliJ IDEA 에서 JAR 생성
    - 설정 : Project Setting -> Artifacts -> 설정추가
    - 생성 : Build -> Build Artifacts



* EXE 파일 만들기

launch4j 이용

http://launch4j.sourceforge.net/



//===========
* 주석 : C++과 동일
    - 한줄 : //
    - 범위 : /*   */


//=================
* 제어, 조건, 반복
http://www.tutorialspoint.com/java/java_loop_control.htm
https://wikidocs.net/211
      do{
         System.out.print("value of x : " + x );
         x++;
         if( x > 10) break;
      }while( x < 20 );

      for(int x = 10; x < 20; x = x+1) {
         System.out.print("value of x : " + x );
      }

      int [] numbers = {10, 20, 30, 40, 50};
      for(int x : numbers ){
        if( x == 30 ) {
              continue;
         }
         System.out.print( x );
      }
     
      String [] names ={"James", "Larry", "Tom", "Lacy"};
      for( String name : names ) {
         System.out.print( name );      
      }


//=================
* 클래스, 메소드(=함수)
public class Main {

    public static void main(String[] args) {
        System.out.println("헬로우 World ");

        Test1 t1 = new Test1();
        t1.sum1(1,2);

    }

}

class Test1 {
    int i;

    //생성자
    public Test1(){
        i= 2;
        System.out.println("생성자 ");
    }

    //소멸자, 사용 권장안함!! 실행된다는 보장이 없음
    public void finalize() {
        System.out.println("소멸자 ");
    }

    //메소드(=함수)
    public int sum1(int a, int b) {
        System.out.println("sum ");
        return a+b;
    }
}


//==================
* 파일 입출력
http://chs02.tistory.com/14
    void FileOp() throws IOException  {

        //파일 쓰기
        System.out.println("파일 쓰기");
        FileWriter fw = new FileWriter("C:\\Test.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        for(int i=0; i< 10; i++){
            bw.write( (i+1)+"줄\r\n" );
            bw.flush();
        }
        bw.close();
        fw.close();

        //================
        //파일 읽기
        System.out.println("파일 읽기");
        FileReader fr = new FileReader("C:\\Test.txt");
        BufferedReader br = new BufferedReader(fr);
        while(true) {
            String line = br.readLine();
            if (line==null) break;
            System.out.println( line );
        }
        br.close();
        fr.close();

    }


//=================
< GUI >
* AWT(Abstract Window Toolkit) :
* 스윙(Swing) - AWT 보다 나은 그래픽 제공
* 표준 위젯 툴킷(SWT, Standard Widget Toolkit)
    - 이클립스에서 사용하고 있는 자바기반의 위젯 툴킷(Widget Toolkit)
    - JNI(Java Native Interface) 사용


예제 소스

http://codens.info/1021



//==================
< 자바 관련 용어 정리 >

* 자바 버전 출시 역사

http://en.wikipedia.org/wiki/Java_version_history
    JDK 1.0 (1996)
    JDK 1.1 (1997) - JDBC, RMI, JIT
    J2SE 1.2 (1998) - Swing, IDL, Collections
    J2SE 1.3 (2000) - RMI, JNDI, JavaSound
    J2SE 1.4 (2002) - Java Web Start
    J2SE 5.0 (2004)
    Java SE 6 (2006)


2008/9 - 안드로이드 운영체제 1.0 발표

2009/4 - 썬을 오라클이 인수합병, Oracle에게 넘어감

    Java SE 7 (2011)
    Java SE 8 (2014) - Lambda


Java SE 9 (2017) - 6개월 단위로 버전업 선언

Java SE 10 (2018)

Java SE 11 (2018) - LTS

Java SE 12 (2019)

Java SE 13 (2019)

Java SE 14 (2020)

Java SE 15 (2020)

Java SE 16 (2021)

Java SE 17 (2021) - LTS


https://en.wikipedia.org/wiki/Java_version_history




* PaaS(Platform as a service)
    - 개발 요소들을 웹에서 빌려쓰는 모델
    Google App Engine(GAE) :
    Microsoft Azure :
    Amazon Web Services (AWS) :

* Groovy(그루비)
    -  자바에 파이썬, 루비 등의 특징을 더한 언어

* Hibernate
    - 자바 기반의 ORM (Object Relationship Mapper)
    - 자바 객체를 RDBMS의 하나의 ROW로 맵핑

* JBoss
    - 자바기반 미들웨어, 어플리케이션 서버

* Drools : 오픈 소스 Rule Engine

* Rule Engine:
    - 소프트웨어의 일부분이며, 최소한의 지식(Knowledge)만으로도, 결론을 추론(inferencing)해낼 수 있는 도구
    - 문제점 분석, 장애 발생 의심 상황 탐지, 매우 복잡한 문제 해결

* JavaBeans (자바빈즈)
    - 자바로 작성된 재사용가능한 컴포넌트
    - 자바빈 규약을 따르는 클래스
    - MVC 구조에서 모델(Model)에 해당, 데이터를 표현

* 서블릿( Servlet )
    - 웹서비스를 위한 인터페이스, javax.servlet.Servlet 인터페이스의 구현체
    - 클라이언트의 요구를 받아 그에 대한 처리를 한 후, 결과를 되돌려주는 서버 모듈
   
* 서블릿 컨테이너
    - servlet을 실행하고 관리하는 역할
    - 네크워크 통신, 서블릿의 생명주기 관리, 스레드 기반의 병렬처리를 대행
    - HTTP 요청을 해석하여 적정한 서블릿의 service 메서드를 호출

* 미들웨어
    - 클라이언트와 서버 간의 통신을 담당하는 시스템 소프트웨어
    - 컴퓨터와 컴퓨터의 연결을 담당하는 시스템 소프트웨어
    - TP 모니터(TP Monitor: Transaction Processing Monitor)
    - 데이터베이스 미들웨어 : ex)  ODBC 드라이버
    - WAS(Web Application Server) 미들웨어 : JBoss
           

* 어플리케이션 서버, WAS(Web Application Server)
    - HTTP 세션 처리를 위한 웹서버, 
    - TP모니터(Transaction Processing Monitor, Teleprocessing monitor)
    - 기업 업무까지 자바, EJB 컴포넌트 기반으로 구현 가능하게 해주는 미들웨어
    - 제우스, JBoss

* JavaEE Persistence
    - 다양한 데이터 소스에 대한 범용적인 접근
    - ex) JDBC, ODBC

* OSGi

* Thymeleaf
    -  web application에서 view를 쉽게 작성할수 있도록 해주는 View Template Engine
    - XML / XHTML / HTML5 template engine


반응형
Posted by codens