본문 바로가기

Programming/Java

JVM(JavaVirtualMachine) JVM(JavaVirtualMachine)JVM(JavaVirtualMachine)은 자바언어를 클래스로더를 통해 바이트코드로 해석하고 실행하는 머신이다. JVM이 있기에 자바는 플랫폼에 독립적일수 있다는 것은 자바개발자라면 알것이다. 물론 요즘에는 자바이외에도 스칼라, 그루비등 많은 언어가 JVM위에서 동작한다. 그리고 JVM을 알고 있어야 좋은 개발자라는 이야기를 많이 보았다. JVM은 중간언어로 바이트코드를 사용한다. 자바는 C/C++처럼 직접적으로 CPU가 이해할 수 있는 기계어로 변환하지 않고 JVM이 이해할 수 있는 바이트코드로 변환한다. 이 점은 장비에 의존하지 않고 JVM이라는 가상머신에 의존하기 때문에 JVM만 있으면 어디서든 동작할 수 있다는 장점이 있다. JVM은 클래스파일을 JVM의.. 더보기
Lambda Lambda자바8에 람다가 도입되었다. C#같은 언어에는 이미 있는 기능이었지만 자바에는 이번 버전에 처음 등장하였다.람다의 장점 - 간결하고 명확한 코드로 그 의도를 표현 - 높은 코드생산성일반적인 사용법은 다음 같다.(args) - > { sentence }예)일반 메서드 : public int add(int a, int b) { return a+b; }람다 : (int a, int b) -> { a+b; } 사실 이 예시로는 뭐가 장점이지? 라는 생각을 하게 된다.하지만 이번에 Java에서 Lambda 와 함께 발표한 Stream 인터페이스를 같이 사용하면 조금은 아~ 이래서 라는것을 알게 될것이다.다음은 필터링, 정렬을 steam인터페이스와 Lambda로 구현한 것이다.public ArrayLis.. 더보기
Generics Generics 제네릭은 주로 자바 컬렉션에서 사용되고 있다. 제네릭으로 자바의 컬렉션 자료구조의 타입을 Object로 명시하여 사용할 수 있다. 예를 들어 Integer 타입의 ArrayList를 사용하려면 다음과 같이 사용하면 된다. ArrayList = new ArrayList(); 이렇게 Integer나 String 등 기본적인 타입을 컬렉션에서 제네릭으로 선언 할 수 있다. 하지만 이것보다 직접 만든 Class를 제네릭으로 사용 할 수 있다는 점이 큰 장점이다. 다음과 같이 하나의 getter/setter 클래스를 만든다. class MyObject{private int id;private String pass; public void setId(int id){this.id = id;}public.. 더보기
HashMap VS HashTable VS ConcurrentHashMap 자바는 지원하는 Collection이 상당히 많다. 그리고 비슷한 컬렉션이 많다. 그 중 HashMap 과 HashTable 그리고 자바 1.7 버전이 나오면서 ConcurrentHashMap라는 새로나온 컬렉션이 있다. 이 컬렉션들은 모두 로 데이터를 처리한다. 그럼 이 Collection들은 무슨 차이가 있을까?? 1. HashMap VS HashTable - 두 컬렉션 모두 Map을 Implement하고 있어서 많은 차이는 없지만, 가장 큰 차이는 동기화의 문제이다. HashTable은 모든 Data변경 메소드에 syncronized가 선언 되어있다. 즉, 멀티스레드 환경에서 데이터 무결성을 보장 해주는 것이다. 이 때문에 HashTable은 데이터의 변동시 락을 걸기 때문에 느리다. 반면 Hash.. 더보기