본문 바로가기

Language/[Java]

(91)
[Java] 추상클래스 인터페이스 차이 1. 추상클래스 - 한개의 추상메서드와 일반메소드로 구현가능 - 공통된 기능을 상속 받는 클래스에서 사용하고싶을때, 여러클래스에서 상속 받아서 사용할때 사용하면 좋다. - 미완성된 설계도이고, 상속 받는 하위타입에서 완성을 유도한다. -> 상속 관계를 쭉 타고 올라가서, 같은 조상클래스를 상속하면, 기능까지 완벽히 같은 기능이 필요한 경우 사용하면 좋다. 2. 인터페이스 - 추상메서드로만 구현가능 - 공통의 기능을 정의할때 사용하면 좋다. 여러클래스에서 공통된 기능을 제공할때, 해당 인터페이스를 사용하여, 기능 구현을 강제하면, 각 구현체들의 목적성이 뚜렷해진다. - 설계도이고, 구현체에서 구현을 강제한다. -인터페이스 장점 1. 협업 : return Type과, 메서드명을 미리 선언하여, 병행 개발을 ..
[Java] JIT 컴파일러 Just in Time 컴파일러라고도 불리는 JIT 컴파일러는, 바이트 코드를 컴퓨터 프로세서로 직접 보낼수있는 명령어로 바꾸는 프로그램이다. 자바는 바이트코드를 한번 컴파일하는 과정과 바이트코드를 인터프리터하는 방식 2가지를 진행한다. 인터프리터 방식은 소스코드를 런타임시에 한줄한줄 읽어 들여야 하는방식 때문에 컴파일 방식보다 느리다. 1) 컴파일 방식 : 소스코드를 한꺼번에 컴퓨터가 읽을수있는 기계어로 변환 2) 인터프리터 방식 : 소스코드를 빌드시에는 아무것도 하지 않다가, 런타임시에 한줄한줄 읽어가며 반환 JIT는, 한번 읽어서 기계어로 변경한 소스코드는 번역하지 않는다. 정확히는 반복되는 코드를 모두 컴파일러로 컴파일 시킨다. JIT는 실행엔진 파트에 속해서, 중복되는 소스가 있다면, 인터프리팅..
[Java] Java 장단점 Java의 장점 - 플랫폼에 독립적임 - os에 의존하지 않고, 별도의 멀티 쓰레드 프로그래밍이 가능함 - 객체지향언어로, 캡슐화,추상화, 다형성,클래스 계층 구조가 존재함 단점 - 예외처리를 직접 해주어야함, 그렇지 않으면 컴파일 자체가 실행되지 않는다. - 컴파일 단계에서 속도가 느리다.(JVM을 통해 기계어로 번역되는 과정을 거침, 자바 바이트 코드(자바 컴파일러) -> 기계어(실행엔진))
[Java] OOP(객체 지향 프로그래밍) 관련 공부 OOP란 객체의 관점에서 프로그래밍하는 것을 의미한다. 프로그래밍에서 필요한 데이터를 추상화시켜, 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 중 하나이다. 장점 -코드 재사용이 용이 -유지보수가 쉽다. -대형 프로젝트에 적합하다. 단점 -처리 속도가 상대적으로 느리다. -객체가 많으면 용량이 커질 수 있다. -설계시 많은 노력과 시간이 필요하다. 클래스 - 상태,행위,속성,변수 등을 정의한 것으로, 인스턴스가 생성의 설계가 되는 정보이다. 인스턴스 - 클래스를 바탕으로 생성되어 실제 메모리에 할당되어 사용되는 데이터이다. 특징 1.추상화 어떤 영역에서 필요로 하는 속성이나 행동을 추출하는 작업 구체적인 사물들의 공통적인 특성을 파악해서, 하..
[Java] HttpSession에 대한 이해 HttpSessiondms Java 인터페이스 이며, 이를 사용하여, 세션을 제어할수 있다. Session은 쿠키의 트래픽 이슈와 cookie변경으로 인한 보안 issue를 해결하기 위해 등장했다. 세션의 개념 1.session은 사전적 의미로 서버와 클라이언트 간의 반 영구적으로 상호작용하는 정보 교환이다. 2.session은 server로 요청 하는 client를 구별하기 위해 server에 저장되는 정보입니다. - session은 client에 저장되는 쿠키와 다르게 server에 저장되므로 관리가 용이하고 효율적이며 보안에 강합니다. 3. server는 client request에 session-id를 생성하여 server와 client 브라우저 메모리에 쿠키로 저장한다. -위 쿠키는 일반적인 쿠..
[Java] 제네릭의 개념와 와일드 카드 제네릭은 이전에 공부 했듯이, 특별히 어떤 클래스를 사용할떄, 타입에 대한 제약을 걸어두지 않는 것이다. 그런데, 이렇게 제약조건 없이 사용하게 된다면, String 변수에 Integer가 들어가도런타임시에 발견할수 없다. 그래서 제네릭에서는 제약조건을 와일드 카드라는 개념으로 걸어둘수 있다. 간단한 예를 보면서 이해해보자 FuncUtil 이라는 클래스는 utilList라는 녀석을 넣을때, Test1의 하위로 제약을 둔다면, 실제 메인에서 Test2라는 클래스로 걸때 오류가 발생하면서 런타임시에 발견할수 있게 된다. 만약에 Test2가 Test1을 상속 받게된다면, 해당 오류는 사라지게 된다. 자 , 그러면 와일드 카드에 대한 정확한 이해를 해보도록 하자 제네릭에서 만약에 특정 제약조건을 무조건 받지 않..
[Java] Primitive Type, Wrapper Class 자바 자료형에는 기본형과 참조 타입이 있다. Primitvie Type 과 Wrapper Type 이라고도 얘기한다. 1) Primitive Type byte, short,int,long 등이 있다. null이 올수없고 단순 자료형이다. 값의 비교 연산을 위해서는 ==을 사용한다. 단순 값비교가 가능하다. 2) wrapper Class Byte, Short,Integer등이 온다. 해당 Wrapper Class는 Primitive Type을 객체화 한것이다. Null 이 올수 있고, 값에 대한 일치 비교를 위해서는, ==을 사용하면 hashcode가 비교대상으로 잡히기 때문에 equals를 사용해야한다. Boxing : 기본형 타입을 참조형 타입으로 변경하는 것 Unboxing : 그반대 일반적으로 사용..
[Java] Java heap_memory 에 대해서 Java 프로그램이 시작되면 Java Virtual Machine이 운영체제에서 일부메모리를 가져온다. JVM은 모든 요구사항에 대해서 이 메모리를 사용하며, 이메모리의 일부는 java 힙 메모리라고 한다. 힙은 동적데이터가 할당되어 저장되는 공간이고, GC 동작 대상이다. 힙 메모리의 구조에 대해서 알아보자 처음 객체가 생성되면, Eden 영역에 위치한다. 정기적인 GC이후에 남은 녀석을 Survivor Space로 이동하고 특정 age가 넘으면 OldGeneration에 이동한다. 여기서는 Major GC가 적용된다. permanent영역이고, 클래스 로더에 의해 로드된 클래스들이 저장되는 공간이다. JDK 8부터는 해당 영역이 MetaSpace영역으로 교체 되었다.