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에서 항상 같은 방식으로 실행되는 것은 아니므로 인터프리터 버전과 지원 구문을 기준으로 호환성을 판단한다.

역사

개발 배경

BeanShell의 공개

JVM 생태계에서의 사용

설계 목표

Java 호환 문법

동적 스크립팅

언어 문법

동적 변수 선언

제어 흐름

메서드와 객체

스크립트 명령

JVM 통합

Java API

리플렉션

인터프리터 임베딩

실행 환경

CLI

애플리케이션 내 스크립트

타입과 호환성

활용 분야

설정

테스트

플러그인

관련 문서

  1. BeanShell — Introduction ↩
  2. BeanShell 소스와 문서 ↩