Java

Java

    [Java] 프로그램 메모리 저장 방식

    [Java] 프로그램 메모리 저장 방식

    📌프로그램이 메모리 사용하는 방식 데이터 저장 영역 = 스태틱 영역 + 스택 영역 + 힙 영역 💡main 메소드 실행될 때 데이터 저장 영역 JRE는 프로그램안에 main() 메소드가 있나 확인한다. main() 메소드 존재가 확인되면 JVM에 전원을 넣어 부팅한다. JVM은 목적 파일을 받아 목적 파일을 실행한다. JVM은 java.lang 패키지를 데이터 영역의 스태틱 영역에 가져다 놓는다. 개발자가 작성한 모든 클래스와 import 패키지를 스태틱 영역에 가져다 놓는다. main() 메소드 구동 위해 스택 프레임이 스택 영역에 할당된다. 정확히 말하면 클래스 정의를 시작하는 중괄호를 제외한 모든 여는 중괄호를 만날 때마다 스택 프레임이 하나씩 스택 영역에 할당된다. 메소드의 인자를 저장할 변수 공간..

    [이클립스] Github(깃허브)에서 source(소스) clone(가져오기)

    [이클립스] Github(깃허브)에서 source(소스) clone(가져오기)

    📌이클립스에 Github 저장소 등록하기 1. [Window] → [Show View] →[Other...] 메뉴를 선택한다. 2.[Git] → [Git Repositories] 선택 3.[Git Repositories] 뷰 → [Clone a Git repository] 링크를 클릭한다. 4.Clone할 Github의 저장소를 입력해준다. 5.Clone할 Source Branch를 선택한다. 위 이미지는 branch가 'master' branch만 있는 이미지 입니다. 6.Clone한 파일을 저장할 폴더를 지정한다. Clone이 끝난 후 모든 파일을 Import하고 싶으면 위에 파란박스를 체크하면 됩니다. 위에 파란박스를 체크하지 않고 프로젝트를 Import하려면 아래를 마저 읽으면 된다. 📌프로젝트 ..

    [Java] JavaFX 이클립스에 세팅

    [Java] JavaFX 이클립스에 세팅

    (1) JavaFX 플러그인 설치 Help -> Eclipse Marketplace 클릭 e(fx)clipse를 설치한다. (2) JavaFX 프로젝트 생성 JavaFX Project를 생성한다. 생성하더라도 이클립스 환경에서 javafx를 import하지 못하여 오류가 발생하고 있는 것을 확인했을 것이다. (3) JavaFX 라이브러리 추가 https://gluonhq.com/products/javafx/ JavaFX - Gluon Roadmap Release GA Date Latest version Long Term Support Extended or custom support Details 19 September 2022 (planned) early access no 18 March 2022 18...

    [Java] JavaFX 개요

    📌 JavaFX 개요 JavaFX는 데스크톱뿐만 아니라 임베디드 장비에서 실행하는 UI 어플리케이션을 개발할 수 있게 도와주기 위한 그래픽과 미디어 패키지를 말한다. Java에서 UI를 위해 AWT→Swing→JavaFX 순으로 나왔다. JavaFX는 자바 표준 UI 라이브러리였던 Swing보다 더 가벼워지고 더 강력해졌기 때문에 Swing을 대체하는 새로운 라이브러리로 자리매김하고 있다. JavaFX 어플리케이션에서 UI 생성, 이벤트 처리, 멀티미디어 재생, 웹 뷰 등과 같은 기능은 JavaFX API로 개발하고 그 이외의 기능은 자바 표준 API를 활용해서 개발할 수 있다. JavaFX는 화면 레이아웃과 스타일, 어플리케이션 로직을 분리할 수 있기 때문에 디자이너와 개발자들이 협력해서 JavaFX ..

    [Java] NIO 기반 입출력 - (2)NIO 파일과 디렉토리

    IO는 파일의 속성을 읽기 위해 File 클래스만 제공한다. NIO는 더 다양한 파일의 속성 정보를 제공해주는 클래스와 인터페이스를 java.nio.file, java.nio.file.attribute 패키지에서 제공해준다. 📌경로 정의(Path) java.nio.file.Paths Path get(String first, String second, String... more) Path get(URI uri); 입력한 path 리턴 (절대 경로, 상대 경로 모두 가능) Path getFileName() 부모 경로를 제외한 파일 또는 디렉토리 이름만 가진 Path리턴 Path getName(int index) C:\Temp\dir\file.txt 일경우 index:0 이면 "Temp"의 Path 객체 리턴..

    [Java] NIO 기반 입출력 - (1)NIO란?

    📌NIO란? 새로운 입출력(New Input/Output)이라는 뜻이다. 자세한 설명하기에 앞서 NIO에서 제공하는 패키지에 대한 간략한 설명 표이다. NIO 패키지 포함되어 있는 내용 java.nio 다양한 버퍼 클래스 java.nio.channels 파일 채널, TCP 채널, UDP 채널 등의 클래스 java.nio.channels.spi java.nio.channels 패키지를 위한 서비스 제공자 클래스 java.nio.charset 문자셋, 인코더, 디코더 API java.nio.charset.spi java.nio.charset 패키지를 위한 서비스 제공자 클래스 java.nio.file 파일 및 파일 시스템에 접근하기 위한 클래스 java.nio.file.attribute 파일 및 파일 시스템..

    [Java] TCP 네트워킹 - (4)스레드 병렬 처리

    [Java] TCP 네트워킹 - (4)스레드 병렬 처리

    📌스레드 병렬 처리 연결 수락을 위해 ServerSocket의 accept()을 실행하거나, 서버 연결 요청을 위해 socket 생성자 또는 connect()를 실행할 경우에는 해당 작업이 완료되기 전까지 블로킹(blocking)된다. 데이터 통신을 할 때에도 마찬가지인데 InputStream의 read() 메소드는 상대방이 데이터를 보내기 전까지 블로킹되고, OutputStream의 wrtie() 메소드는 데이터를 완전하게 보내기 전까지 블로킹 된다. 즉 말하고자 하는 바는 ServerSocket과 Socket은 동기(블로킹) 방식으로 구동된다. 만약 서버를 실행시키는 main 스레드가 직접 입출력 작업을 담당하게 되면 입출력이 완료될 때 까지 다른 작업을 할 수 없게 된다. 서버 어플리케이션은 지속적..

    [Java] IO 기반 입출력 - (1)입력 스트림과 출력 스트림

    📌IO 패키지 소개 프로그램에선 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번히 일어난다. 데이터는 사용자로부터 키보드를 통해 입력될 수도 있고, 파일 또는 네트워크로부터 입력될 수도 있다. 데이터는 반대로 모니터로 출력될 수도 있고, 파일로 출력되어 저장될 수도 있으며 네트워크로 출력되어 전송될 수 있다. Java에서 데이터는 Stream을 통해 입출력되므로 스트림의 특징을 잘 이해해야 한다. 📌입력 스트림과 출력 스트림 (InputStream & OutputStream) 프로그램이 데이터를 입력받을 때는 입력 스트림(InputStream)이라 부르고, 프로그램이 데이터를 보낼 때에는 출력 스트림(OutputStream)이라 부른다. 프로그램이 네트워크상의 다른 프로그램과 데이터 교환을 하기..