BeanShell
BeanShell은 Java 문법을 인터프리터에서 동적으로 실행하도록 설계된 스크립트 언어 및 경량 실행 라이브러리다. Java로 구현되어 JVM 안에서 실행되며, Java 클래스·객체·메서드와 표준 라이브러리를 그대로 활용할 수 있다. 일반적인 Java 소스 파일을 작성해 컴파일하는...
| 분류 | 스크립트 언어, Java 소스 인터프리터 |
|---|---|
| 개발자 | Pat Niemeyer |
| 기반 언어 | Java |
| 구현 언어 | Java |
| 실행 환경 | JVM |
| 타입 체계 | Java 정적 타입과 동적 스크립트 편의 기능 |
| 기본 문법 | Java 구문 및 느슨한 타입 선언 |
| 인터프리터 | bsh.Interpreter |
| 주요 기능 | 리플렉션, 동적 평가, Java API 직접 접근 |
| 배포 형태 | 임베디드 라이브러리, 명령줄 인터프리터 |
| 활용 분야 | 테스트·설정·자동화·확장 스크립팅 |
| 라이선스 | 오픈 소스 |
| 공식 사이트 | BeanShell |
BeanShell은 Java 문법을 인터프리터에서 동적으로 실행하도록 설계된 스크립트 언어 및 경량 실행 라이브러리다. Java로 구현되어 JVM 안에서 실행되며, Java 클래스·객체·메서드와 표준 라이브러리를 그대로 활용할 수 있다. 일반적인 Java 소스 파일을 작성해 컴파일하는 방식에 더해 변수 선언의 축약, 간단한 명령, 동적 메서드 정의와 같은 스크립트용 기능을 제공하므로 Java 프로그램에 대화형 실행 환경을 삽입하는 데 적합하다.[1]
BeanShell은 Java와 비슷한 문장·표현식·제어 흐름을 사용하면서 스크립트 문맥에서는 변수의 자료형을 명시하지 않는 작성 방식도 지원한다. 일반 Java 객체의 메서드 호출과 속성 접근, 리플렉션, 인터페이스 및 이벤트 처리 등을 사용하여 실행 중인 응용 프로그램의 상태를 조작할 수 있다. Java 클래스 파일과 별도로 컴파일하지 않은 코드 조각을 평가할 수 있다는 점이 정적 컴파일 언어로 사용하는 Java와 구분되는 특징이다.
이 언어의 핵심 활용 형태는 JVM 애플리케이션 내부에 bsh.Interpreter를 포함하고 스크립트가 프로그램의 객체와 서비스에 접근하도록 하는 방식이다. 플러그인·규칙·설정 및 테스트 코드를 재시작 없이 시험하거나 확장 기능을 사용자 스크립트로 제공할 수 있다. BeanShell은 기존 JVM 클래스와 자원을 직접 사용하는 방식이므로, 별도의 가상 머신을 새로 만드는 대신 Java 런타임과 긴밀하게 통합된다.[2]
BeanShell은 Java와의 친숙한 문법을 유지하면서 동적 스크립트 개발의 반복 속도를 높이려 한 역사적 JVM 언어 가운데 하나다. Java에 기반한 다른 언어인 Groovy나 JRuby와 비교하면 Java 소스 해석과 임베딩을 핵심 목표로 한 점이 특징이다. Java 언어 사양의 모든 후대 기능이 BeanShell에서 항상 같은 방식으로 실행되는 것은 아니므로 인터프리터 버전과 지원 구문을 기준으로 호환성을 판단한다.