본문 바로가기

Java

자바의 애노테이션은 어떻게 사용하는 걸까? @interface의 진짜 의미와 활용법 이번에는 애노테이션에 대해서 학습할게요.자바를 이용하면서 애노테이션을 많이 사용하는데, 정확한 의미는 잘모르는 것 같아서 찾아볼게 많을 것 같네요. ㅎㅎ 주석이라고 해석할 수 있는 Annotation은 자바에서 어떠한 기능을 하는지 찾아보겠습니다. 애노테이션은 코드의 동작에 직접적인 영향을 미치지않고, 메타데이터의 형태로 프로그램의 데이터를 제공한다고 합니다. 컴파일러에 대한 정보 : 컴파일러는 애노테이션을 사용하여 오류를 감지하거나 경고를 억제할 수 있습니다.컴파일 시간 및 배포 시간 처리 : 소프트웨어 도구는 애노테이션 정보를 처리하여 코드, XML 파일 등을 생성할 수 있습니다.런타임 처리 : 일부 애노테이션은 런타임 시 검사할 수 있습니다. 애노테이션은 클래스, 필드, 메소드 및 기타 프로그램 요.. 더보기
자바 enum 클래스는 왜 생겨났을까? 열거형의 필요성과 사용법 이번 주제는 조금은 쉽지만, 유용하게 사용하는 열거형 enum에 대해서 알아보려고해요.열거형은 다른 언어들과 마찬가지로 여러 상수를 관리할때 사용할 수 있어요.enum을 정의하는 방법부터 enum에 어떠한 메서드들이 제공되고 있는지 보면 좋을 것 같네요.  enum은 2004년 자바 Java SE 5 부터 도입되었는데요. 이때가 어노테이션, 지네릭등 기능적으로 많이 추가되었는데, enum 클래스도 같이 추가되었다고 합니다. oracle 공식문서부터 살펴 볼게요.enum이 나오기 전에 계절을 예로 들면서 public static final로 상수값을 정의하는 enum pattern을 사용 했었다고 하면서 이 패턴에 대한 문제점으로 인해 나왔다고 서술하네요. 나름대로 풀이해보면서 정리 해볼게요. 1.   .. 더보기
멀티쓰레드 프로그래밍에서 필요한 지식들 능동적으로 동작하는 쓰레드는 무엇이 있을까요?프로세스와 쓰레드가 무엇인지? 자바에서는 이러한 개념들을 어떻게 다루는지 이야기 해볼게요.추가로 Executors나 Future에 대해서도 이야기 하면 좋겠네요. 🙃  1.   프로세스와 쓰레드가 무엇일까?자바에서 쓰레드를 다루기 전에 OS 단위에서 프로세스와 쓰레드가 무엇인지 사전 지식을 알 필요가 있습니다.저는 이전에 프로세스와 쓰레드의 차이를 브라우져의 탭을 예를 들어 이야기 했었는데요.하나의 브라우져가 열리는 것을 프로세스라고 하면 그 브라우져안에서 자원을 공유받아 사용하는 탭이 나뉘는게 쓰레드라고 설명하면서요. 한번은 누가 "정말 아는게 맞나요? 예시말고 제대로된 지식으로 말해 주세요."라고 한적이 있었는데 부끄럽게도 제대로 이야기 하지 못했던 기억.. 더보기
자바에서 패키지 그리고 클래스패스(CLASSPATH) 7차 패키지 그리고 클래스패스에 대해서 학습할게요. 1.  자바에서 package는 무엇을 말하는거야? 패키지는 관련 클래스 및 인터페이스 집합을 구성하는 네임스페이스라고 정의 합니다. 개념적으로 패키지는 컴퓨터의 폴더와 유사하다고 하는데, 한 폴더에는 HTML 페이지를, 다른 폴더에는 이미지를, 또 다른 폴더에는 스크립트나 응용 프로그램을 보관할 수 있다고 설명하네요. 또한 Java 프로그래밍 언어로 작성된 소프트웨어는 수백 또는 수천 개의 개별 클래스로 구성될 수 있으므로 관련 클래스와 인터페이스를 패키지에 배치하여 구성하는것이 합리적이라고 합니다.  폴더와 비슷하지만, 클래스, 하위 패키지 및 인터페이스 그룹을 비슷한 것들끼리 모아서 관리하기 쉽게 캡슐화하는 메커니즘이라고 이해하시면 좋을 것 같네요.. 더보기
자바의 상속에 대하여 이번 주차는 상속에 대한 학습입니다.이전 포스트와 겹치는 부분도 있고, 연관해서 생각 할 부분이 많아서 백기선님 과제가 굉장히 체계적으로 보이네요.oracle java document 순서로 내주시는 것 같아서, 요거보고 과제를 내시나 싶기도 하구요.제 학습방법이 제대로된 방향으로 가고있는 것 같아요. ㅎㅎ  1.  상속의 특징은?What is Inheritance?상속은 객체지향 프로그래밍의 특징 중 하나입니다.자바 컨셉문서를 보면, 자전거를 예를 들어서 설명하고 있네요.현세계에서 물체는 종종 서로 일정한 공통점을 가지고 있는데요. 같은 공통점을 한데 묶어서 사용할 수 있으면 하는 생각에서 비롯된 개념이 상속인 것 같아요. 상속은 말그대로 상위 클래스의 속성, 기능을 사용할 수 있게 만드는 개념입니다... 더보기
자바의 클래스(Class)란 무엇일까? 최근에 생소한 게임을 만드는 프로젝트를 맡게 되어 업무에 치이다보니, 일과 관련된 공부만 했었던 것 같네요. ㅎㅎCBT가 거의 끝나가고 있어서, 개인 공부를 좀 해야겠다라는 생각이 들어요.블로그에 새글도 쓰면 좋겠다 싶기도 하고 ㅎㅎ그래서 가볍게 시작하면 어떨까 합니다. 개발 커뮤니티 들렸다가, 굉장히 좋아하는 백기선님이 온라인으로 진행했던 라이브 스터디를 클론하여 발표하고 공유하는 모임이 있어서, 자바를 다시 복습하면서 자바를 사용하고 느꼈던 부분을 공유하면 좋겠다 싶어서 참여 하기로 마음먹었어요. 스터디는 5주차 과제부터 15주차 까지 진행하기로 했는데 일단 필수 과제 내용을 보고 제가 알고 있는 내용 끄적여보고 찾아보면서 좀 더 깊게 정리 해볼까 합니다. 1. 클래스가 무엇이고, 어떻게 정의하지? .. 더보기
JVM (Java Virtual Machine) 자바가상머신 이란? JVM(자바가상머신) 이란? JVM은 자바 언어를 공부하는데 처음이자 끝이라고 생각이 듭니다. Java 언어로 작성된 소스코드는 컴파일러를 통해 컴파일되어 바이트코드로 변환되는데 이를 해석하고 실행하는 것이 JVM이라고 할 수 있습니다. 쉽게 보면 Java 위에 JVM이 위를 살짝 덮어 어떠한 운영체제 상에서도 실행 될수 있게 하는 중개자라고 아시면 되겠습니다. JVM의 구조를 살펴보겠습니다. 추가적으로 바이트 코드는 기계어가 아니기 때문에 OS(운영체제)에서 실행이 불가 합니다. 기계가 읽을 수 있게 대신 해석해준다는 것은 Java의 큰 장점이겠죠? 또한 어떠한 OS에도 영향을 받지 않기때문에 의존성을 줄여 독립적이라는 특성도 가지고 있습니다. 그러면 JVM의 구성요소는 어떻게 될까요? Class Lo.. 더보기