JiBX는 무엇인가.?

JiBX 는 XML데이터를 Java객체로 바인딩하기 위한 프레임워크이다. 당신의 클래스 구조를 사용하여 XML문서로부터 데이터를 가지고 작업하도록 해준다. JiBX프레임워크는 데이터를 당신의 지시에 따라 XML로부터 또는 XML로 변환하는 상세한 모든것을 다룬다. JiBX는 높은 효율성으로 내부 데이터 구조와 XML간의 변형(translation)을 수행하기 위해 디자인되었다. 여전히 변형처리를 제어하는 높은 단계를 허용한다.

어떻게 이것을 관리하는가.? JiBX는 Java객체를 XML로 변환하거나 XML을 Java객체로 변환하는 방법을 위한 규칙을 정의하기 위한 바인딩 정의 문서를 사용한다. 당신이 소스코드를 클래스 파일로 컴파일한후 몇몇 지점에서 binding compiler라는 JiBX프레임워크의 첫번째 부분을 수행한다. 이 컴파일러는 XML로부터 또는 XML로 클래스의 인스턴스를 변환하는 코드를 추가하여 Java컴파일러에 의해 생성된 바이너리 클래스 파일을 향상시킨다. 바인딩 컴파일러를 수행한후, 당신은 애플리케이션을 조합(jar파일을 빌딩하는 것과 같은)하는 일반적인 단계를 지속할수 있다. 당신은 수행시 직접 클래스를 바인딩하는 대신에 분리된 단계처럼 바인딩 컴파일러를 건너띌수 있다. 하지만 이 접근법은 몇가지 결점을 가진다.

JiBX프레임워크의 두번째 부분은 binding runtime이다. 바인딩 컴파일러에 의해 생성된 향상된 클래스 파일은 XML입력 문서로부터 실제로 객체를 빌드(데이터 바인딩 개념에서 unmarshalling이라 불리는)하고 객체로부터 XML출력 문서를 생성(marshalling이라 불리는)하기 위한 런타임 컴포넌트를 사용한다. 런타임은 입력 문서를 다루기 위한 XMLPull API 를 구현한 파서를 사용한다. 하지만 반대의 경우는 자족적(self-contained)이다.

이 접근법은 몇가지 중요한 잇점을 제공한다.

  1. 유연성 - XML로부터 또는 XML로 변형하는 방법을 JiBX에 알릴수 있는 한 당신이 원하는 클래스 구조 사용.
  2. 성능 - 파싱을 행하고 클래스 파일 향상 기술은 JiBX에게 당신의 클래스에 대해 높은 성능의 직접적인 마샬링과 언마샬링을 하도록 해준다.
  3. 깔끔한 코드 - 당신은 코드를 작성하고 JiBX는 이것과 작동한다. 코드에 이러한 작업이외에 다른 부분은 없다.

JiBX성능이 다른 Java XML직렬화 그리고 데이터 바인딩 프레임워크에 대해 비교하는 외부 의견을 위해, 당신은 BindMark 테스트 결과를 볼수 있다. 또는 Web services performance.에서 유사한 정보를 볼수 있다.

당신은 IBM developerWorks XML부분에서 JiBX 창시자인 Dennis Sosnoski 의 성능관련 자료인 Data Binding, Part 2: Performance를 볼수 있다. 성능적인 면의 이슈외에도 Dennis는 JiBX 1.X 코드 생성 아키텍처를 다루고 JiBX 2.0디자인 관점에서, Java 수업용(Classworking) 툴킷을 작성했다.