달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
출처 : http://www.ibm.com/developerworks/kr/library/j-5things11/index.html


JVM의 명령행 플래그에 대해 모르고 있던 5가지 사항


 

JVM 성능 및 Java 런타임 정밀 조정하기
 

JVM은 Java 애플리케이션의 기능과 성능을 뒷받침하는 일꾼이지만 대부분의 Java 개발자는 이를 당연한 것으로 여기고 중요하게 생각하지 않는다. 그리고 오브젝트 할당 및 가비지 콜렉션, 스레드 실행, 파일 열기 및 닫기, Java 바이트코드 해석 및/또는 JIT 컴파일 등의 작업이 JVM에서 처리되는 방법을 제대로 이해하고 있는 개발자는 거의 없다.



애플리케이션 성능에 영향을 주는 JVM 기능에 익숙하지 않을 때뿐만 아니라 JVM에서 오류가 발생한 경우에도 문제점을 해결하기가 매우 어려울 수 있다.

5가지 사항 시리즈의 이 기사에서는 Java 가상 머신의 성능을 진단 및 조정하는 데 사용할 수 있는 여러 가지 명령행 Java 플래그를 소개한다.

1. DisableExplicitGC

필자는 애플리케이션 성능 문제점에 대한 상담 의뢰를 받고 코드 전체에 대해 빠른 grep을 수행하여 원래 Java 성능 안티 패턴인 Listing 1과 같은 내용을 발견한 경험이 얼마나 많은지 모른다.


Listing 1. System.gc();
// We just released a bunch of objects, so tell the stupid
// garbage collector to collect them already!
System.gc();

명시적 가비지 콜렉션은 정말로 나쁜 아이디어이다. 이는 마치 공중전화 부스 속에 자기 자신을 광견병에 걸린 개와 함께 가둬놓는 것과 비슷하다. 구현에 따라 호출의 정확한 의미가 달라지기는 하지만 JVM이 제너레이셔널(generational) 가비지 콜렉터(대부분의 가비지 콜렉터가 제너레이셔널 가비지 콜렉터임)를 실행하고 있을 경우 System.gc();를 실행하면 전체 삭제가 필요하지 않더라도 VM이 힙을 "전체 삭제"하게 된다. 일반적으로 전체 삭제에는 일반적인 GC 조작보다 몇 배나 더 높은 비용이 소요된다. 이는 분명 어리석은 방법이다.

하지만 이 말을 그대로 받아들이면 안 된다. 왜냐하면 Sun의 엔지니어가 이 특별한 인적 오류 문제점을 해결하기 위한 JVM 플래그를 제공했기 때문이다. -XX:+DisableExplicitGC 플래그는 자동으로 System.gc() 호출을 무작동으로 전환한다. 따라서 코드를 실행한 후System.gc()가 JVM의 전체 실행에 도움이 되는지 아니면 해가 되는지 여부를 직접 확인할 수 있다.



2. HeapDumpOnOutOfMemoryError

근래에 OutOfMemoryError가 발생하면서 JVM이 종료될 뿐만 아니라 디버거를 사용하여 오류를 찾고 문제점을 확인할 수도 없는 상황을 경험한 적이 있는가? 원인을 알 수 있는 이와 같은 문제점이 발생하면 개발자가 화가 나서 정신을 차리기 어려울 것이다.

사용자 책임

Sun/Oracle의 VM 이외의 다른 VM에서는 일부 명령행 플래그가 지원되지 않을 수도 있다. 플래그의 지원 여부를 가장 효과적으로 확인하는 방법은 무엇보다도 직접 사용해 보고 작동하는지 확인하는 것이다. 하지만 이러한 플래그가 기술적으로 지원되지 않더라도 플래그 사용에 대한 책임은 전적으로 사용자 자신에게 있다. 필자뿐만 아니라 Sun/Oracle 또는 IBM®마저도 이러한 플래그로 인해 코드, 데이터 또는 서버가 크게 손상되더라도 그 어떠한 책임을 지지 않는다. 따라서 미리 주의를 주지만 가상(비프로덕션) 환경에서 먼저 사용해 보기를 권장한다.

JVM이 종료되려는 순간에 힙의 스냅샷을 작성하고 싶은 경우가 있다. 바로 이 기능을 -XX:+HeapDumpOnOutOfMemoryError 명령이 수행한다.

이 명령을 실행하면 JVM이 "힙 덤프 스냅샷"을 작성한 후 처리를 위해 파일에 저장한다. 일반적으로 이 작업에는 jhat 유틸리티(필자의 이전 기사 참조)가 사용된다. 해당 -XX:HeapDumpPath 플래그를 사용하여 파일을 저장할 실제 경로를 지정할 수 있다. (파일이 어느 위치에 저장되던지 상관 없이 파일 시스템 및/또는 Java 프로세스에 해당 위치에 작성할 수 있는 권한이 있는지 확인한다.)




3. bootclasspath

설치된 JRE에 포함되어 있는 경로 또는 JRE를 조금 확장한 경로와는 약간 다른 클래스 경로에 클래스를 주기적으로 저장해 두는 것이 좋다. (새 Java Crypto API 제공자가 예가 될 수 있을 것이다.) JRE를 확장하려고 하면 사용자 정의 구현을 부트스트랩 ClassLoader에서 사용할 수 있어야 하며, 이 클래스 로더는 java.lang.Object 및 rt.jar의 모든 항목을 로드한다.

크랙을 사용하여 rt.jar을 열고 사용자 정의 구현 또는 새 패키지를 넣을 수도 있겠지만 이는 JDK를 다운로드할 때 동의했던 라이센스를 기술적으로 위반하는 것이다.

대신 JVM 자체의 -Xbootclasspath 옵션을 -Xbootclasspath/p 및 -Xbootclasspath/a와 함께 사용한다.

-Xbootclasspath를 사용하면 전체 부트 클래스 경로를 설정할 수 있으며, 이 클래스 경로는 일반적으로 rt.jar에 대한 참조를 포함해야 하며 rt.jar에 포함되지 않은 JDK의 다른 JAR 파일 세트도 포함해야 한다. -Xbootclasspath/p는 값을 기존 부트 클래스 경로 앞에 추가하고, -Xbootclasspath/a는 값을 뒤에 추가한다.

예를 들어, 설치된 java.lang.Integer를 수정한 후 수정 사항을 서브디렉토리 mods에 저장한 경우 -Xbootclasspath/a mods 매개변수는 새 Integer를 기본값 앞에 놓는다.



4. verbose

-verbose는 거의 모든 유형의 Java 애플리케이션에 사용할 수 있는 유용한 1차 진단 유틸리티이다. 이 플래그에는 gcclass 및 jni라는 세 개의 서브플래그가 있다.

gc는 작동 중인 JVM 가비지 콜렉터로 인해 성능이 저하되었는지 확인할 때 가장 먼저 사용되는 도구이다. 아쉽게도 gc의 출력에 대한 해석은 한 권의 책으로 다루어질 정도로 까다롭다. 게다가 명령행에 인쇄되는 출력이 Java 릴리스 또는 JVM별로 다를 수 있기 때문에 올바르게 해석하기가 더욱 어렵다.

일반적으로 말해서, 가비지 콜렉터가 제너레이셔널 콜렉터(대부분의 "엔터프라이즈급" VM)이면 전체 삭제 GC 패스를 나타내는 일종의 시각적 플래그가 표시된다. Sun JVM의 경우에는 플래그가 GC 출력 행의 맨 앞에 "[Full GC ...]"로 표시된다.

class는 ClassLoader 및/또는 일치하지 않는 클래스 충돌을 진단하는 데 도움이 되는 도구이다. 이 플래그는 클래스의 로드 시간뿐만 아니라 JAR 파일에 대한 경로를 포함한 클래스의 원본 위치까지도 보고한다(JAR에서 로드된 것으로 가정).

jni는 JNI 및 네이티브 라이브러리 작업 외에는 거의 사용되지 않는다. 이 플래그를 사용하면 네이티브 라이브러리가 로드되었거나 메소드가 바인드되었다는 등의 다양한 JNI 이벤트가 보고된다. 다시 한번 말하지만 JVM의 릴리스별로 출력이 달라질 수 있다.



5. 명령행 -X

지금까지 JVM에서 제공하는 명령행 옵션 중에서 필자가 좋아하는 몇 가지 옵션을 살펴보았다. 하지만 직접 찾아볼 수 있는 더 많은 옵션이 있다. 명령행 인수 -X는 JVM에서 제공하는 모든 비표준(하지만 대부분 안전한) 인수를 나열한다. 예를 들어, 다음과 같다.

  • -Xint는 JVM을 해석된 모드로 실행한다. (이 인수는 JIT 컴파일러가 코드에 실제로 영향을 주는지 테스트하거나 JIT 컴파일러에 버그가 있는지 확인할 때 유용하다.)
  • -Xloggc:는 -verbose:gc와 동일한 기능을 제공하지만 명령행 창에 표시하는 대신 파일에 로깅한다.

JVM 명령행 옵션은 때때로 변경되므로 주기적으로 확인하는 것이 좋다. 모니터를 보고 있던 늦은 밤 중이나, 가족과 함께 저녁 만찬을 하기 위해 오후 5시에 퇴근하는 중이나 아니면 Mass Effect 2에서 적을 무찌르는 동안에 변경될 수도 있다.



결론

명령행 플래그는 프로덕션 환경에서 지속적으로 사용하기 위한 것이 아니다. JVM 가비지 콜렉터를 조정하기 위해 사용하는 플래그를 제외하고, 비표준 명령행 플래그는 실제로 프로덕션용이 아니다. 하지만 제대로 알기 힘든 가상 머신의 내부 작업을 살펴볼 수 있는 도구라는 점에서 이러한 태그는 매우 유용하다.

5가지 사항 시리즈의 다음 주제는 일상적인 Java 도구이다. 

:
Posted by 라면스프
출처 : http://www.java-tips.org/java-tutorials/tutorials/introduction-to-java-servlets-with-eclipse.html


Introduction

Java Servlet is the one of the most important Java technologies. It is the simplest model to build a complete Java J2EE Web Application. Furthermore, even for complex J2EE Web Application that uses Struts, Spring, EJB and etc, they are still using Servlet for certain purposes such as Servlet Filter, Listener and etc. Thus, it is just a good idea for you to have well-built understanding of Java Servlet. Prior reading this tutorial, it would be excellent if you have mastered the basic Java programming languages.

At the completion of the tutorial, you are expected to comprehend the concept of the Java Servlet, be familiar with the ways to create Java Servlet using Eclipse 3.1.2, differences between POST and GET and should be ready to go to the next level.

In this tutorial, we are going to create one dynamic web application that asks the user for first name and surname. Then the system should response by greeting the users.

The tutorial consists of four main steps.

  1. Introduction to Eclipse 3.1.2
  2. Creating New Web Application Project in Eclipse 3.1.2 with Web Tools Platform (WTP) Plug-in.
  3. Creating Server Definition in Eclipse 3.1.2
  4. Implementation of Tutorial’s Example
  5. How to Start Tomcat Manually
  6. How to Shutdown Tomcat Manually
  7. Conclusion



Introduction to Eclipse 3.1.2

Nowadays, many J2EE developers are using Eclipse as their IDE for Java programming language. One of the reasons is that Eclipse is free and is easily extendable. Yes, that is correct, there are plentiful plugins available in Internet for Eclipse. Additionally, the famous IBM WebSphere Application Developer for developing J2EE application in WebSphere is also implemented above the Eclipse framework.

Besides Java programming, Eclipse can also be used to edit any file such as C++, C or PHP and etc. You need to remember that Eclipse does not have any server embedded in it. Eclipse is just an editor. Well, let’s start to explore on how Eclipse can assist you in creating a Java Servlet.

Creating New Web Application Project in Eclipse 3.1.2 with Web Tools Platform (WTP) Plug-in

Okay, for our tutorial, we are going to exercise Web Tools Platform (WTP) plugin. I would suggest you to download Web Tools Platform (WTP) together with Eclipse so you should not be bothered on how to install the plugin into Eclipse and etc. Ideally, if you download Eclipse without any plugin, it does not have any support for J2EE Development. That is the core reason why various vendors are implementing J2EE plugins for Eclipse. Web Tools Platform is not the only J2EE plugin available for Eclipse. There are numerous J2EE plugins available in Internet such as Lomboz from ObjectLearn, MyEclipse and etc. If you are interested to know deeper on Eclipse plugin, you can visithttp://www.eclipseplugincentral.com/ for the complete list of available plugins for Eclipse.

To download Web Tools Platform (WTP), you can go to http://www.eclipse.org/webtools/ and you can download it together with Eclipse by choosing the download link on the left panel of that particular site. Web Tools Platform (WTP) plugin with Eclipse is approximately 182 MB. It will be in zip file and you will not have installation for it. You can extract it to C:\ and you can directly use Eclipse by double clicking the Eclipse.exe file in the extracted folder.

Unlike NetBeans, Eclipse does not have any server embedded in it thus, in order to create a Java Servlet in Eclipse; you need to install the server (for our tutorial, you need Apache Tomcat) as well as the Java Development Kit (JDK) from Sun.

Before going further to our tutorial, it would be good if you understand the concept of Java Servlet as explained in the next paragraphs.

Creating a Java Servlet means that you are required to deal with JSP (JavaServer Pages). JSP is actually a HTML but unlike HTML, JSP may have Java codes (usually we call it as Scriptlet) embedded in it. In short words, we may represent JSP as dynamic HTML. In Java J2EE Web Application, JSP plays as a front-end while Java Servlet is the controller that contains the business logics, complex algorithms and etc.

For example, consider “Online University Student Registration System” developed in Java J2EE Web Application, the registration page where you fill in your details such as your name, your address, your username and etc are actually a JSP page. Later on, when you have completed filling out all the details and you press the submit button, all the information will be sent to Java Servlet for further processes. Java Servlet receives this information, does the necessary processes such as validations, generating user id and etc and then keeps the information to database. After successfully saving the data to database, Java Servlet redirects the user to the success page where the user can log in to the system. Likewise, if there is an unexpected error occurred happening in the middle of student registration system’s process, the user will be redirected to the error page.

Assuming that you have installed Eclipse with Web Tools Platform (WTP) Plugin, Java Development Kit 1.5 and Tomcat Server 5.5, let’s start to create our first Java Servlet. Start Eclipse and you should see similar to below illustration in your screen. Yes, this is the main page of Eclipse.



Image 

To create our Java Servlet, we are required to create a Project called Dynamic Web Project. Go to your menu, choose New and Project. A wizard will be prompted to you.



Image 

Go to the Web and choose Dynamic Web Project and press Next. If you do not have Dynamic Web Project available, it means that Web Tools Platform (WTP) plugin is not correctly installed to Eclipse. Please re-download it or look at the documentation of Web Tools Platform (WTP) plugin for more details.



Image 

A wizard will be displayed to you. The wizard is mainly used to configure our Dynamic Web Project. You are allowed to name your Dynamic Web Project with any name that you wish but please consider to choose the name that is self-explanatory.

For our tutorial’s sample, I am going to name my Dynamic Web Project as MyFirstServlet. There is an interesting point worth to be looked at in this wizard. You need to provide the Target Runtime. What does it mean? Well, it basically requests you to identify the server that you would like to use for this Dynamic Web Project; in this case, Apache Tomcat. You may try to click on the combo box to observe whether you have any existing server(s) or not. If not, you are required to create one server for your project. If this is the first time you run Eclipse, you should not have any server yet. So, click on the New button on the right side of the Target Runtime combo box. Remember, after defining one server, you can re-use it in other projects so you do not need to define new server in every project unless if you wish to use other servers than Tomcat such as Bea WebLogic and etc.



Image 
:
Posted by 라면스프
출처 : http://gubok.tistory.com/124


날짜를 나타낼때 변수로 받은 타입이 스트링일 경우가 많다. 이경우 DateFormat을 이용하여 Date 타입으로 컨버팅 하는데 자주 사용하다 보니 유틸리티로 만들어서 사용하곤 한다. 
그러다 보니 그 포맷 형태를 까먹을 때가 많다. 굳이 다 기억하고 싶지는 않지만 그래도 정리하고자 한다.

가장 일반적으로 사용하는 클래스는 java.text.SimpleDateFormat 클래스를 사용하는데, 성능면에서 많이 떨어진다고 한다.(얼마나 떨어지는지는 비교수치를 찾을 수가 없다. 시간 되면 테스트 한번 해보자). 그래서 사용하는 것이 apache.commons 에 있는 FastDateFormat 클래스이다. 
SimpleDateFormat이든 FastDateFormat이든 변수로 사용되는 format 형식은 동일하다.

Letter Date / Time Component Examples
G Era designator AD
y Year 1996; 96
M Month in year July; Jul; 07
w Week in year 27
W Week in month 2
D Day in year 189
d Day in month 10
F Day of week in month 2
E Day in week Tuesday; Tue
a Am/pm marker PM
H Hour in day (0-23) 0
k Hour in day (1-24) 24
K Hour in am/pm (0-11) 0
h Hour in am/pm (1-12) 12
m Minute in hour 30
s Second in minute 55
S Millisecond 978
z Time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone -0800

1. String을 Date 타입으로 변환시 예제
String stringDate = "2009/02/19";
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date newDate = dateFormat.parse(stringDate);

apache.commons의 FastDateFormat 클래스는 다음처럼 사용한다.
FastDateFormat fastdateformat = FastDateFormat.getInstance(format, locale);
locale은 request로 부터 받아도 되고 또는 Default로 new Locale("ko_KR")처럼 지정할수도 있다.

2. 역으로 Date타입을 String타입으로 변환시 예제
String newStringDate = dateFormat.format(newDate)

상황에 따라서 newDate.toString()을 쓰기도 하지만 엉뚱한 값이 나올수도 있으니 유의.

다음엔 Locale에 들어가는 값에 대해 알아보고 정리해 보기로 해야겠다.
:
Posted by 라면스프
출처 : http://wiki.javajigi.net/pages/viewpage.action?pageId=7188


왜 필요한가?

우리들이 일반적으로 개발하고 있는 대부분의 자바 웹 애플리케이션의 디렉토리 구조를 보면 프로젝트마다 제각기 다르다는 것을 알 수 있다. 물론 프로젝트의 성격에 따라 다르게 구성하는 것이 맞겠지만 기본적인 디렉토리 구조에 대한 가이드안을 만든다면 프로젝트에 참여하는 개발자들이 좀 더 빠르게 친숙해 질 수 있을 것으로 생각한다.

여러분들이 지금까지 참여한 프로젝트들의 디렉토리 구조는 어떠한가? 우선 지금까지 자바지기가 진행한 프로젝트의 디렉토리 구조를 예로 들고 각각의 구조에 대한 좀 더 좋은 방안을 찾아보고자 한다.

이 문제를 토론 주제를 빠르게 선정한 이유는?

현재 자바지기에 대한 사이트 개편 작업을 진행할 예정이다. 사이트 개편 작업을 하면서 프로젝트의 디렉토리 구조를 정의할 때 다른 개발자들이 생각하거나 일반적으로 사용하는 디렉토리 구조를 공유하여 사용하기 위함이다. 프로그램에 정답이 없듯이 이 문제 또한 정답은 있을 수 없다. 단지 각각의 구조에 따른 장,단점이 있을 따름이다. 프로젝트의 성격에 따라서 디렉토리 구조를 결정하면 될 것으로 생각한다.

무엇을 얻을 수 있나?

Java 웹 애플리케이션의 프로젝트에 대한 디렉토리 구조를 정의함으로서 신규 프로젝트를 진행할 때 추가적인 고민없이 프로젝트를 진행하는 것이 가능하다.

다양한 디렉토리 구조

디렉토리 구조 공유

여러분들이 지금 사용하고 있는 디렉토리 구조를 공유해주시면 더 좋겠네요. 만약 여러분이 그와 같은 구조를 만들었다면 왜 그와 같은 구조를 만들게 되었는지..지금과 같은 구조로 프로젝트를 진행했을 때의 장,단점은 무엇인지 등에 대해서 공유해주시면 좋겠네요.

해결 방법

  • 최근 대부분의 자바 웹 애플리케이션 개발에서 공통적으로 보이는 경향은 자바 소스 디렉토리와 Web 소스(js, css, jsp, html)를 분리한다.
  • 자바 소스 디렉토리는 실제 구현 소스와 테스트 소스를 분리한다. 또한 실제 구현 소스와 같은 패키지내에 테스트 소스를 구현하는 것을 원칙으로 하고 있다.
  • 빌드 환경까지 제공해줄 수 있어야 한다.

자바지기 개편안을 위한 디렉토리 구조

자바지기 개편안을 위한 디렉토리 구조는 Equinox의 디렉토리 구조를 따르는 것으로 했다. Equinox의 경우 디렉토리 구조 뿐만 아니라 각 프레임워크별로 기본 템플릿 프로젝트를 제공하기 때문에 세팅하기 쉽다.

또 한가지 Equinox를 선택하게 된 이유는 단순한 디렉토리 구조 뿐만아니라 Build 환경까지 제공한다는 것이다. Build 환경이 단순하게 Ant만을 지원했다면 선택하지 않았겠지만 Ant와 Maven의 강점 두가지를 모두 가지고 있는 구조가 마음에 들었다. 이와 같은 구조로 웹 애플리케이션을 개발할 경우 CVS나 SVN을 통하여 라이브러리를 공유하지 않은 상태로 개발하는 것이 가능하다. 또한 경우에 따라서는 Maven을 이용하여 빌드하는 것 또한 가능하기 때문이다.

Ant과 AntLib의 조합, build.xml과 pom.xml의 조합은 그 동안 해결하려고 했던 많은 문제점을 해결해 줄 수 있을 것이라 생각한다. 또한 pom.xml을 가지고 있기 때문에 Eclipse Maven IDE를 이용하여 개발하는 것이 가능하게 된다.

build.xml의 다음 코드를 통하여 Ant와 Maven이 통합되었을 때 라이브러리 관리가 얼마나 편하게 될 수 있는지 확인할 수 있을 것이다.

build.xml
    <artifact:pom file="pom.xml" id="maven.project"/>

    <artifact:dependencies pathId="compile.classpath" filesetId="compile.fileset" useScope="compile">
        <pom refid="maven.project"/>
    </artifact:dependencies>
    
    <artifact:dependencies pathId="test.classpath" filesetId="test.fileset" useScope="test">
        <pom refid="maven.project"/>
    </artifact:dependencies>
    
    <artifact:dependencies pathId="runtime.classpath" filesetId="runtime.fileset" useScope="runtime">
        <pom refid="maven.project"/>
    </artifact:dependencies>

    <target name="compile" description="Compile main source tree java files">
        <mkdir dir="${build.dir}/classes"/>
        <javac destdir="${build.dir}/classes" debug="true" optimize="false"
            deprecation="false" failonerror="true">
            <src path="${src.dir}"/>
            <classpath>
                <path refid="compile.classpath"/>
                <fileset dir="${web.dir}/WEB-INF/lib" includes="*.jar"/>
            </classpath>
        </javac>
        <!-- compile tests -->
        <mkdir dir="${test.dir}/classes"/>
        <javac destdir="${test.dir}/classes" debug="true" optimize="false"
            deprecation="false" failonerror="true">
            <src path="${test.src}"/>
            <classpath>
                <path refid="test.classpath"/>
                <path location="${build.dir}/classes"/>
                <fileset dir="${web.dir}/WEB-INF/lib" includes="*.jar"/>
            </classpath>
        </javac>
        <!-- Copy XML files to ${build.dir}/classes -->
        <copy todir="${build.dir}/classes">
            <fileset dir="${src.dir}" includes="**/*.xml"/>
        </copy>
    </target>

이와 같이 두가지를 통합하여 사용할 경우 라이브러리를 개발자간에 공유할 필요없이 pom.xml만 공유하면 된다.

:
Posted by 라면스프
2012. 1. 23. 13:08

[JAVA] Vector와 ArrayList의 차이점 Enjoy/JAVA2012. 1. 23. 13:08

출처 : http://www.todayis.net/vSix/index.php?ct1=3&ct2=32


Vector와 ArrayList는 extends, implements가 동일하니 쌍둥이라고도 할 수 있을 만큼 동일합니다. 하지만 차이가 있는데, 

인용:

Vector는 synchronized이고, ArrayList는 아닙니다.
Vector는 1.0 부터 있어왔고, ArrayList는 1.2에서부터 생겼습니다.
Vector는 크기 조절이 알아서 되는 Array 오브젝트를 구현하려고 생겼다가 1.2가 나올 때 동일한 목적을 가진 List를 구현한 것으로 바뀌어 Collection framework에 포함이 되었습니다.
따라서 1.2부터는 다음처럼 써서 필요할 때 바꿔치는 것이 됩니다.

List list = new ArrayList()
List list = new Vector()


그럼 둘 중에 무엇을 쓰느냐가 다음 질문인데, ArrayList를 씁니다. 만약 concurrent 프로그래밍을 위해 Vector처럼 synchronized가 필요하면 Collections.synchronizedList()라는 Collections의 wrapper method를 다음처럼 쓰면 됩니다.
List list = Collections.synchronizedList(new ArrayList(...));

그럼 Vector는 언제 쓰느냐 라는 질문이면, 저는 1.1 호환의 예전 소스나 책에 매인 것이 아니라면 Vector는 쓰지말라고 하겠습니다.
:
Posted by 라면스프
2011. 9. 26. 11:25

Eclipse의 Code Template Enjoy/JAVA2011. 9. 26. 11:25


출처 : Eclipse의 Code Template

 
동일한 내용을 반복하는 일은 은근히 귀찮은 일이죠.

Eclipse의 Code Template을 기능을 사용하면 편리합니다.

지금 하고 있는 프로젝트에서 javadoc 생성을 위해 모든 method에 주석을 넣으라고 하더군요.
어떤 분이 Code Template을 사용하는 방법을 알려주셔서 편하게 작업할 수 있었습니다.

먼저, 이클립스를 열어서 다음 경로로 들어가 보세요.
Window > Preferences > Java > Code Style > Code Templates

Comments를 펼치세요.

 

 1. Class에 주석 넣기

Types를 클릭하면 다음과 같이 보입니다.

[Edit] 버튼을 눌러서 템플릿을 원하는 내용으로 바꾸세요.

적용을 한 후,
파일을 열어서 class 윗부분에 커서를 위치시키고
단축키 [Shift + Alt + J]를 누르시면 아래와 같이 Code Template에 등록한 주석이 나타납니다.

 

2. Method에 주석 넣기

 Methods를 클릭하면 다음과 같이 보입니다.


[Edit] 버튼을 눌러서 템플릿을 원하는 내용으로 바꾸세요.

적용을 한 후,
파일을 열어서 Method 안에 커서를 위치시키고


단축키 [Shift + Alt + J]를 누르시면 아래와 같이 Code Template에 등록한 주석이 나타납니다.

이렇게 좋은 기능이 있는데 지금까지 복사[Ctrl+C]하고 붙여넣기[Ctrl+V]했던 게 넘 억울하지 않았나요?

이외에도 이클립스에 정말 많은 좋은 기능들이 있을텐데..
앞으로 열심히 찾아볼 생각입니다.
 

:
Posted by 라면스프
2011. 9. 26. 11:04

JavaDoc 작성법 Enjoy/JAVA2011. 9. 26. 11:04


출처 : JavaDoc 작성법|작성자 으라차차 




개요의 다큐멘테이션 태그

개요 태그는, 개요 페이지의 다큐멘테이션 코멘트로 사용할 수 있는 태그입니다. 이 다큐멘테이션 코멘트는, 통상 overview.html (이)라는 이름의 원시 파일내에 있습니다. 다른 다큐멘테이션 코멘트의 경우와 같게, 이러한 태그는,주설명의 나중에 사용할 필요가 있습니다.

 - 버젼 1.2 에서는, 개요 문서내의 {@link} 태그에 버그가 있습니다. 텍스트는 올바르게 표시됩니다만, 링크가 설정되지 않습니다. 현재로서는,{@docRoot} 태그는, 개요 문서내에서는 동작하지 않습니다.

개요 태그
@see
@since
@author
@version
{@link}
{@linkplain}
{@docRoot}

패키지 다큐멘테이션 태그

패키지 태그는, 패키지의 다큐멘테이션 코멘트로 사용할 수 있는 태그입니다. 이 다큐멘테이션 코멘트는,package.html (이)라는 이름의 원시 파일내에 있습니다. 여기서 사용할 수 있는 @serial 태그는,include 또는 exclude 인수를 지정한 것 뿐입니다.

패키지 태그
@see
@since
@serial
@author
@version
{@link}
{@linkplain}
{@docRoot}

클래스 및 인터페이스 다큐멘테이션 태그

이하에, 클래스 또는 인터페이스의 다큐멘테이션 코멘트로 사용할 수 있는 태그를 나타냅니다. 여기서 사용할 수 있는 @serial 태그는,include 또는 exclude 인수를 지정한 것 뿐입니다.

클래스 및 인터페이스 태그
@see
@since
@deprecated
@serial
@author
@version
{@link}
{@linkplain}
{@docRoot}

다음에 클래스 코멘트의 예를 나타냅니다.

/**
* A class representing a window on the screen.
* For example:
* <pre>
* Window win = new Window(parent);
* win.show();
* </pre>
*
* @author Sami Shaio
* @version %I%, %G%
* @see java.awt.BaseWindow
* @see java.awt.Button
*/
class Window extends BaseWindow {
...
}


 

필드 다큐멘테이션 태그

이하에, 필드의 다큐멘테이션 코멘트로 사용할 수 있는 태그를 나타냅니다.

필드 태그
@see
@since
@deprecated
@serial
@serialField
{@link}
{@linkplain}
{@docRoot}
{@value}

다음에 필드 코멘트의 예를 나타냅니다.

    /**
* The X-coordinate of the component.
*
* @see #getLocation()
*/
int x = 1263732;


 

constructor    및 메소드 다큐멘테이션 태그

다음에, constructor    또는 메소드의 다큐멘테이션 코멘트내에서 사용할 수 있는 태그를 나타냅니다. 다만,@return (은)는 constructor    내에서는 사용하지 못하고,{@inheritDoc} 에는어느 제약이 있습니다. @serialData 태그는,특정의 직렬화 된 메소드의 다큐멘테이션 코멘트에서만 사용할 수 있습니다.

메소드 및 constructor    태그
@see
@since
@deprecated
@param
@return
@throws (@exception)
@serialData
{@link}
{@linkplain}
{@inheritDoc}
{@docRoot}

다음에 메소드의 다큐멘테이션 코멘트의 예를 나타냅니다.

    /**
* Returns the character at the specified index. An index
* ranges from <code>0</code> to <code>length() - 1</code>.
*
* @param index the index of the desired character.
* @return the desired character.
* @exception StringIndexOutOfRangeException
* if the index is not in the range <code>0</code>
* to <code>length() -1</code>.
* @see java.lang.Character#charValue()
*/
public char charAt(int index) {
...
}


========================================================

Javadoc 옵션

-overview  path/filename
Javadoc 에 대해서,path/filename 그리고 지정된 「소스」파일로부터 개요 문서용의 텍스트를 취득해, 그 텍스트를 개요 페이지 (overview-summary.html) 에 배치하도록(듯이) 지정합니다.path/filename 는,-sourcepath 에의 상대 패스입니다.

filename 와 path 에는, 각각 임의의 이름과 장소를 지정할 수 있습니다만, 통상은,overview.html (이)라는 이름을 붙여, 소스 트리내의 최상정도의 패키지 디렉토리가 있는 디렉토리에 배치합니다. 이 장소에 배치하면(자),-sourcepath 에 의해 이 파일이 지시해지므로, 패키지를 문서화할 때에 path 가 불필요하게 됩니다. 예를 들어,java.lang 패키지의 소스 트리가 /src/classes/java/lang/ 의 경우, 개요 파일을 /src/classes/overview.html 에 배치할 수 있습니다. 「사용예」를 참조해 주세요.

path/filename 로 지정하는 파일에 대해서는,「개 요점 코멘트 파일」을 참조해 주세요.

개요 페이지가 작성되는 것은, Javadoc 에 복수의 패키지명을 건네주었을 경우만입니다. 자세한 것은,「HTML 프레임」을 참조해 주세요.

개요 페이지의 타이틀은,-doctitle 에 의해 설정됩니다.

-public
public 클래스 및 멤버만을 표시합니다.

-protected
protected 및 public 의 클래스와 멤버만을 표시합니다. 이것은 디폴트의 설정입니다.

-package
package, protected, 및 public 의 클래스와 멤버만을 표시합니다.

-private
모든 클래스와 멤버를 표시합니다.

-help
on-line help를 표시합니다. Javadoc 와 도크 렛의 커멘드행 옵션이 일람표 나타납니다.

-doclet  class
문서의 생성에 사용하는 도크 렛을 기동하기 위한 클래스 파일을 지정합니다. 완전 지정의 이름을 지정해 주세요. 이 족크렉 트에 의해, 출력의 내용과 형식이 정의됩니다. -doclet 옵션이 사용되지 않은 경우, Javadoc 는, 표준 도크 렛을 사용해 디폴트의 HTML 형식을 생성합니다. 이 클래스에는,start(Root) 메소드가 포함되지 않으면 안됩니다. 이 기동 클래스에의 패스는,-docletpath 옵션에 의해 정의됩니다.

예를 들어, MIF 도크 렛을 호출하려면 , 다음과 같이 지정합니다.

    -doclet com.sun.tools.doclets.mif.MIFDoclet

특정의 도크 렛을 실행한 완전한 예에 대해서는,「Running the MIF Doclet」를 참조해 주세요.

-docletpath  classpathlist
-doclet 옵션으로 지정되고 있는 도크 렛 개시 클래스 파일, 및 거기에 의존한다 jar 파일에의 패스를 지정합니다. 개시 클래스 파일이 jar 파일내에 있는 경우, 이하의 예의 같게 jar 파일의 패스가 지정됩니다. 절대 패스 또는 현재의 디렉토리로부터의 상대 패스를 지정할 수 있습니다. classpathlist 에는, 복수의 패스 또는 JAR 파일을 포함할 수가 있습니다. 그 경우, 각 패스 또는 JAR 파일을, Solaris 의 경우에는 구두점 (:), Windows 의 경우에는 세미콜론 (;) 그리고 단락짓습니다. 목적의 도크 렛 개시 클래스가 벌써 검색 패스내에 있는 경우는, 이 옵션은 불필요합니다.

jar 파일에의 패스의 예에는, 도크 렛 개시 클래스 파일이 포함되어 있습니다. jar 파일명이 포함되어 있는 점에 주목해 주세요.

   -docletpath /home/user/mifdoclet/lib/mifdoclet.jar
도크 렛 개시 클래스 파일의 패스의 예클래스 파일명이 생략 되고 있는 점에 주목해 주세요.
   -docletpath /home/user/mifdoclet/classes/com/sun/tools/doclets/mif/
특정의 도크 렛을 실행한 완전한 예에 대해서는,「Running the MIF Doclet」를 참조해 주세요.

-1. 1
이 기능은, Javadoc 1.4 에서는 삭제되었습니다. 대체 기능은 없습니다. 이 옵션은, Javadoc 1.1 에 의해 생성되는 것과 같은 외관과 기능을 가지는 문서를 작성하기 위한의 것이었습니다. 상자의 클래스는 서포트되고 있지 않습니다. 이 옵션이 필요한 경우는, Javadoc 1.2 또는 1.3 을 사용해 주세요.

-source release
받아들이는 원시 코드의 버젼을 지정합니다. release 에는 다음의 값을 지정할 수 있습니다.
1.5 Javadoc 는, JDK 1.5 로 도입된 범용 기능 및 다른 언어 기능을 포함한 코드를 받아들입니다. -source 플래그를 지정하지 않으면 컴파일러는 디폴트로서 1.5 의 동작을 합니다.
1.4 Javadoc 는, JDK 1.4 로 도입된, assertion를 포함한 코드를 받아들입니다.
1.3 Javadoc 는, JDK 1.3 이후에 도입된 assertion, 범용 기능, 또는 다른 언어 기능을 서포트하지 않습니다.

javac 로 코드를 컴파일 할 경우에 사용한 값에 대응하는 release 의 값을 사용합니다.

-sourcepath  sourcepathlist
javadoc 커멘드에 패키지명 또는 -subpackages (을)를 건네줄 때, 원시 파일 (. java)를 검색하기 위한 패스를 지정합니다. sourcepathlist 에는, 구두점 (:)으로 단락지어 복수의 패스를 포함할 수가 있습니다. Javadoc 툴은, 지정된 패스 이하의 모든 서브 디렉토리를 검색합니다. 이 옵션을 사용해, 문서화 되는 원시 파일의 위치 뿐만이 아니라, 그 자체는 문서화 되지 않지만 문서화 되는 원시 파일로부터 상속된 코멘트를 가지는 원시 파일의 위치도 확인할 수 있습니다.

-sourcepath 옵션은, javadoc 커멘드에 패키지명을 건네줄 때만 사용할 수 있습니다. javadoc 커멘드에게 건네진다 . java 파일은, 이 패스로부터는 검색되지 않습니다. . java 파일을 검색하려면 , 그 파일이 있는 디렉토리에 cd 에 의해 이동하는지, 또는 각 파일의 선두에 패스를 포함합니다 (「1 개이상의 클래스의 문서화」를 참조). -sourcepath 가 생략 되었을 경우, Javadoc (은)는, 클래스 패스를 사용해 원시 파일을 검색합니다 (-classpath (을)를 참조). 따라서, 디폴트의 -sourcepath 는, 클래스 패스의 값입니다. -classpath 도 생략 해 패키지명을 Javadoc 에 건네주면(자), Javadoc 는 현재의 디렉토리 및 그 서브 디렉토리로부터 원시 파일을 검색합니다.

sourcepathlist 에는, 문서화하는 패키지명의 소스 트리의 루트 디렉토리를 설정합니다. 예를 들어,com.mypackage (이)라는 이름의 패키지를 문서화하는 경우에, 그 원시 파일이 다음의 장소에 있다고 합니다.

  /home/user/src/com/mypackage/*.java
이 경우, 다음과 같이 해 sourcepath 를 /home/user/src, 즉 com/mypackage 를 포함한 디렉토리로 지정해, 그리고 패키지명 com.mypackage (을)를 지정합니다.
  % javadoc -sourcepath /home/user/src/ com.mypackage
      
이 지정 방법은, 「소스 패스의 값과 패키지명을 연결해, 닷을 slash 「/」에 바꾸면(자), 패키지의 풀 패스 (/home/user/src/com/mypackage) (이)가 된다」라고 기억하면 간단합니다.

2 개의 소스 패스를 설정하려면 , 다음과 같이 합니다.

  % javadoc -sourcepath /home/user1/src:/home/user2/src com.mypackage
      

-classpath  classpathlist
Javadoc 가참조 클래스 (. class 파일)을 검색하는 패스를 지정합니다. 참조 클래스란, 문서화 되는 클래스와 그러한 클래스에 의해 참조되는 모든 클래스입니다. classpathlist 에는, 구두점 (:)으로 단락지어 복수의 패스를 포함할 수가 있습니다. Javadoc 툴은, 지정된 패스 이하의 모든 서브 디렉토리를 검색합니다. classpathlist 를 지정할 때는,클래스 패스의 문서에 있는 지시에 따라 주세요.

-sourcepath 가 생략 되고 있는 경우, Javadoc 툴은,-classpath (을)를 사용해, 클래스 파일 뿐만이 아니라 원시 파일도 검색합니다 (하위 호환성이기 때문에). 따라서, 원시 파일과 클래스 파일을 다른 패스로부터 검색할 필요가 있는 경우는,-sourcepath (와)과 -classpath 의 양쪽 모두를 사용합니다.

예를 들어,com.mypackage 를 문서화하는 경우에, 원시 파일이 디렉토리 /home/user/src/com/mypackage에 있어, 이 패키지가 /home/user/lib 내의 라이브러리를 사용한다면, 다음과 같이 지정합니다.

  % javadoc -classpath /home/user/lib -sourcepath /home/user/src com.mypackage
      
다른 툴과 같게,-classpath 가 지정되어 있지 않은 경우는, CLASSPATH 환경 변수가 설정되어 있으면, Javadoc 툴은 이 환경 변수를 사용합니다. 어느쪽이나 설정되어 있지 않은 경우, Javadoc 툴은 현재의 디렉토리에서 클래스를 검색합니다.

확장 기능 클래스 및 bootstrap 클래스에 관련한, Javadoc 툴이 -classpath (을)를 사용해 유저 클래스를 검색하는 방법에 대한 자세한 것은,「클래스의 검색 방법」을 참조해 주세요.

-subpackages  package1:package2:...
원시 파일로부터 지정된 패키지 및 그 서브 패키지내에 재귀적으로 문서를 생성합니다. 이 옵션은, 소스코 드에 새로운 서브 패키지를 추가할 때에 편리합니다. 새로운 서브 패키지는 자동적으로 짜넣어집니다. 각 package 인수는, 임의의 최상정도 서브 패키지 (java등) 또는 완전 지정의 패키지 (javax.swing 등)이 됩니다. 원시 파일을 포함할 필요는 없습니다. 인수는, 구두점으로 단락지어집니다 (모든 operating system). 와일드 카드는 불필요합니다 (사용 불가). 패키지의 검색 장소를 지정하려면 ,-sourcepath 를 사용합니다. 이 옵션은,「원시 파일의 처리」로 설명했던 대로, 소스 트리에 있지만 팍케이 지에는 속하지 않은 원시 파일을 처리하지 않기 때문에 도움이 됩니다.

다음에 예를 나타냅니다.

  % javadoc -d docs -sourcepath /home/user/src -subpackages java:javax.swing
      
이 커멘드는, 「java」 및 「javax.swing」라고 하는 이름의 패키지와 이러한 서브 패키지 전부의 문서를 생성합니다.

-exclude 와 함께 -subpackages (을)를 사용하면(자), 특정의 패키지를 제외할 수 있습니다.

-exclude  packagename1:packagename2:...
지정된 패키지와 그 서브 패키지를 -subpackages 에 의해 작성된 리스트로부터 무조건 제외합니다. 과거의 -subpackages 옵션의 지정에 의해 짜넣어진 패키지, 또는 장래 짜넣어지는 패키지도 제외의 대상이 됩니다. 다음에 예를 나타냅니다.
  % javadoc -sourcepath /home/user/src -subpackages java -exclude java.net:java.lang
      
이 중,java.io,java.util,java.math (은)는 짜넣어집니다만,java.net 와 java.lang 이하의 패키지는 제외됩니다. 다만,java.lang 의 서브 패키지인 java.lang.ref (은)는 제외됩니다.

-bootclasspath  classpathlist
부트 클래스가 존재하는 패스를 지정합니다. 부트 클래스란, 통상, Java 플랫폼의 코어 클래스입니다. 부트 클래스 패스는, Javadoc 툴이 원시 파일과 클래스 파일을 찾을 때 사용하는 검색 패스의 일부입니다. 자세한 것은,「javac 와 javadoc 가 클래스를 검색하는 방법」을 참조해 주세요. classpathlist내의 복수의 디렉토리는, 구두점 (:)으로 단락짓습니다.

-extdirs  dirlist
확장 기능 클래스가 존재하는 디렉토리를 지정합니다. 확장 기능 클래스란, Java 확장 기능 기구를 사용하는 모든 클래스입니다. extdirs 는, Javadoc 툴이 원시 파일과 클래스 파일을 찾을 때 사용하는 검색 패스의 일부입니다. 자세한 것은, 전술의 -classpath (을)를 참조해 주세요. dirlist 내의 복수의 디렉토리는, 구두점 (:)으로 단락짓습니다.

-verbose
javadoc 의 실행중에 상세한 메세지를 표시합니다. verbose 옵션을 지정하지 않으면 원시 파일의 로드시, 문서의 생성시 (원시 파일 마다 1 개의 메세지), 및 소트시에 메세지가 표시됩니다. verbose 옵션을 지정하면(자), 각 Java 원시 파일의 해석에 필요로 한 시간 (밀리 세컨드 단위) 등, 추가의 메세지가 표시됩니다.

-quiet
에러 메세지 또는 경고 메세지 이외의 메세지를 억제해, 경고와 에러만이 표시되도록(듯이) 해, 이것들을 특정하기 쉽고 섬 . 버젼 캐릭터 라인도 억제합니다.

-breakiterator 
영어 언어라고 하는 로케일 고유의 알고리즘은 아니고,java.text.BreakIterator 의 국제화 된 문장 경계를 사용해, 영문의 최초의 문장의 마지막을 판단합니다 (다른 모든 로케일은 벌써 BreakIterator(을)를 사용). 「최초의 문장」이란, 패키지, 클래스, 또는 멤버의 주설명에서의 최초의 문장입니다. 이 문장은, 패키지, 클래스, 또는 멤버의 요약에 코 피 되어 알파벳순서의 인덱스에 카피됩니다.

JDK 1.2 이후, BreakIterator 클래스는, 영어를 제외한 모든 언어의 문장의 마지막을 판단하기 위해서(때문에), 벌써 사용되고 있습니다. 따라서, 1.2 이후에서는,-breakiterator 옵션은 영문 이외에는 효과가 없습니다. 영문에는, 다음과 같은 독자적인 디폴트의 알고리즘이 있습니다.

  • 영문의 디폴트의 문장 단락 알고리즘 - 공백 또는 HTML 블록 태그 (<P> 등)이 계속되는 피리어드로 정지한다
  • breakiterator 문 단락 알고리즘 - 일반적으로, 다음의 말이 대문자로 시작되는 경우, 공백 문자가 계속되는 피리어드, 물음표, 또는 감탄부로 정지한다. 이 알고리즘에서는, 대부분의 생략 표기가 처리된다 ( 「The serial no. is valid」는 처리되지만 「Mr. Smith」는 처리되지 않는다). HTML 태그나, 숫자 또는 기호로 시작되는 문장에서는 정지하지 않는다. HTML 태그에 파묻히고 있는 경우에서도, 「../filename」의 마지막 피리어드로 정지한다

주: 1.5. 0 으로부터는, 1.4.x 에 설치되고 있던 breakiterator 경고 메세지를 삭제해, 디폴트의 문장 단락 알고리즘을 변경하고 있습니다. 즉, -breakiterator 옵션은, 1.5. 0 그럼 디폴트는 아니게 되어, 또 디폴트로 할 생각도 없습니다. 이것은, 「다음의 메이저 릴리스」(1.5. 0) 그리고 디폴트를 변경한다고 하는, 이전의 목적과는 거꾸로 되고 있습니다. 즉, 원시 코드를 변경하지 않고, 1.4.x 에서의 breakiterator 경고를 제거하고 있지 않는 경우에서도, 1.5. 0 으로부터는 아무것도 할 필요가 없고, 경고는 소멸하고 있습니다. 이 반대 귀가의 이유는, breakiterator (을)를 디폴트로 하는 메리트보다, 디폴트로 하기 위해서(때문에) 필요한, 호환성이 없는 소스의 변경이 부담이 컸기 (위해)때문에입니다. 이것에 소비한 작업이나 혼란이 쓸데없게 되어 유감입니다.
-locale  language_country_variant
중요 - -locale 옵션은,표준 도크 렛이 제공하는 모든 옵션, 또는 그 외의 임의의 도크 렛의 제공하는 모든 오프 숀보다 전 (좌측) (으)로 지정할 필요가 있습니다. 그렇게 하지 않으면 네비게이션 바가 영어로 표시됩니다. 이 커멘드행 옵션만은, 지정하는 순서에 의존합니다.
Javadoc 가 문서를 생성할 경우에 사용하는 로케일을 지정합니다. 인수에는, java.util.Locale 의 문서로 설명되고 있는 로케일의 이름을 지정합니다. 예를 들어,en_US (영어, 미국),en_US_WIN (Windows 로 사용되는 영어) 등을 지정합니다.

로케일을 지정하면(자), 지정한 로케일의 resource file가 Javadoc 에 의해 선택되어, 메세지 (네비게이션 바, 리스트와 겉(표)의 찾아내, 헬프 파일의 목차, stylesheet.css 의 코멘트등의 캐릭터 라인) (을)를 위해서(때문에) 사용됩니다. 또, 알파벳순서에 소트 되는 리스트의 소트순서, 및 최초의 문장의 말미를 판별하기 위한 문의 단락 문자도, 지정한 로케일 에 의해 정해집니다. 다만, 이 옵션은, 문서화 되는 클래스의 원시 파일내에서 지정되고 있는 다큐멘테이션 코멘트의 텍스트 의 로케일을 결정하는 것이 아닙니다.

-encoding  name
원시 파일의 인코딩의 이름 (EUCJIS/SJIS 등) (을)를 지정합니다. 이 옵션이 지정되어 있지 않은 경우는, 플랫폼의 디폴트 컨버터가 사용됩니다.

-docencoding 및 -charset 도 참조해 주세요.

-Jflag
javadoc 를 실행하는 실행시 시스템 java 에,flag (을)를 직접 건네줍니다. J 와 flag 의 사이에 공백을 들어갈 수 있어 되지 않습니다. 예를 들어, 생성 문서를 처리하기 위해서 시스템으로 32M 바이트의 메모리를 확보해 둘 필요가 있는 경우는, Java 의 -Xmx 옵션을 다음과 같이 호출합니다. -Xms (은)는, 생략 가능합니다. 이것은, 초기 메모리의 사이즈를 설정할 뿐(만큼)의 옵션으로, 필요한 메모리의 최소 사이즈를 알 수 있고 있는 경우에 편리합니다.
   % javadoc -J-Xmx32m -J-Xms32m com.mypackage
      
사용하고 있는 javadoc 의 버젼을 확인하려면 , 다음과 같이 java 의 「-version」옵션을 불러 냅니다.

   % javadoc -J-version
   java version "1.2"
   Classic VM (build JDK-1. 2-V, green threads, sunwjit)
      
출력 스트림에는표준 도크 렛의 버젼 번호가 포함됩니다.

표준 도크 렛이 제공하는 옵션

-d  directory
생성된 HTML 파일을 보존하는 생성처 디렉토리를 지정합니다( 「d」는 「생성처 (destination)」의 의미). 이 옵션을 생략 하면(자), 생성된 파일은 현재의 디렉토리에 보존됩니다. 값 directory 에는, 절대 디렉토리, 또는 현재의 작업 디렉토리로부터의 상대 디렉토리를 지정할 수 있습니다. 버젼 1.4 에서는, javadoc (을)를 실행하면(자) 생성처 디렉토리가 자동적으로 작성됩니다.

예를 들어, 다음의 예에서는,com.mypackage 패키지의 문서를 생성해, 결과를 /home/user/doc/ 디렉토리에 보존합니다.

  % javadoc -d /home/user/doc com.mypackage
      

-use
문서화 되는 클래스 및 패키지 마다 1 개의 「사용」페이지를 짜넣습니다. 이 페이지에는, 그 특정의 클래스 또는 패키지의 API (을)를 사용하고 있는 패키지, 클래스, 메소드, constructor    , 및 필드가 기술됩니다. 예를 들어, 클래스 C 를 예를 들면(자), 클래스 C (을)를 사용하고 있는 것으로서는, C 의 서브 클래스, C 로서 선언되고 있는 필드, C 를 돌려주는 메소드, 및, 형태 C 의 파라미터를 가지는 메소드와 constructor    이 있습니다.

예를 들어, String 의 「사용」페이지에 무엇이 표시될까를 봅시다. java.awt.Font 클래스의 getName()메소드는,String 형을 돌려줍니다. 따라서,getName() (은)는 String 를 사용하고 있으므로,String 의 「사용」페이지에는 이 메소드가 있습니다.

다만, 문서화 되는 것은 API 의 사용 뿐이어, 구현은 문서화 되지 않습니다. 어느 메소드가, 그 구현 중(안)에서 String 를 사용하고 있어도, 인수로서 캐릭터 라인을 취하거나 캐릭터 라인을 돌려주거나 하지 않는 경우는,String 의 「사용」이란 보여지지 않습니다.

생성된 「사용」페이지에 액세스 하려면 , 목적의 클래스 또는 패키지로 이동해, 네비게이션 바의 「사용」링크를 클릭 합니다.

-version
생성 문서에, @version 의 텍스트를 짜넣습니다. 이 텍스트는, 디폴트에서는 생략 됩니다. 사용하고 있다 Javadoc 툴의 버젼을 확인하려면 ,-J-version 옵션을 사용합니다.

-author
생성 문서에, @author 의 텍스트를 짜넣습니다.

-splitindex
색인 파일을 알파벳 마다 복수의 파일에 분할해, 문자 마다 1 개의 파일과 알파벳 이외의 문자로 시작되는 색인 엔트리용으로 1 개의 파일을 작성합니다.

-windowtitle  title
HTML 의 <title> 태그에 배치하는 타이틀을 지정합니다. 지정한 타이틀은, 윈도우의 타이틀이나, 이 페이지에 대해서 작성된 브라우저의 북마크 (마음에 드는 것)에 표시됩니다. 이 타이틀에는 HTML 태그를 포함하지 말아 주세요. 타이틀에 HTML 태그가 포함되어 있으면(자), 브라우저가 태그를 올바르게 해석할 수 없습니다. title 중(안)에서 인용부호를 사용하는 경우는, 인용부호를 이스케이프 할 필요가 있습니다. -windowtitle 가 생략 되고 있는 경우, Javadoc 툴은, 이 옵션 대신에 -doctitle 의 값을 사용합니다.

  % javadoc -windowtitle "Java 2 Platform" com.mypackage
      
-doctitle  title
개요 파일의 최상부의 근처에 배치하는 타이틀을 지정합니다. 타이틀은 centering가 되어, 레벨 1 의 표제로서 상부 네비게이션 바의 바로 아래에 놓여집니다. title 에는, HTML 태그와 공백을 포함할 수가 있습니다만, 이것들을 포함하는 경우는, 전체를 인용부호로 둘러싸지 않으면 안됩니다. title 중(안)에서 인용부호를 사용하는 경우는, 인용부호를 이스케이프 할 필요가 있습니다.

  % javadoc -doctitle "Java<sup><font size=\"-2\">TM</font></sup>" com.mypackage
      
-title  title
이 옵션은, 현재는 존재하지 않습니다. Javadoc 1.2 의 베타판에만 존재했습니다. 이 옵션은,-doctitle (이)라는 이름으로 변경되었습니다. 이름을 변경한 이유는, 이 옵션이, 윈도우의 타이틀은 아니고 문서의 타이틀을 정의하는 것을 명확하게 한다 유익입니다.

-header  header
각 출력 파일의 상단에 배치하는 헤더 텍스트를 지정합니다. 헤더는, 상부 네비게이션 바의 우측으로 배치됩니다. header 에는, HTML 태그와 공백을 포함할 수가 있습니다만, 이것들을 포함하는 경우는, 전체를 인용부호로 둘러싸지 않으면 안됩니다. header 중(안)에서 인용부호를 사용하는 경우는, 인용부호를 이스케이프 할 필요가 있습니다.

  % javadoc -header "<b>Java 2 Platform </b><br>v1. 4" com.mypackage
      

-footer  footer
각 출력 파일의 하단에 배치하는 footer 텍스트를 지정합니다. footer는, 하부 네비게이션 바의 우측으로 배치됩니다. footer 에는, HTML 태그와 공백을 포함할 수가 있습니다만, 이것들을 포함하는 경우는, 전체를 인용부호로 둘러싸지 않으면 안됩니다. footer 중(안)에서 인용부호를 사용하는 경우는, 인용부호를 이스케이프 할 필요가 있습니다.

-bottom  text
각 출력 파일의 최하부에 배치하는 텍스트를 지정합니다. 이 텍스트는, 하부 네비게이션 바보다 아래의, 페이지의 최하부에 배치 . text 에는, HTML 태그와 공백을 포함할 수가 있습니다만, 이것들을 포함하는 경우는, 전체를 인용부호로 둘러싸지 않으면 안됩니다. text 중(안)에서 인용부호를 사용하는 경우는, 인용부호를 이스케이프 할 필요가 있습니다.

-link  extdocURL 
javadoc 에 의해 생성된 기존의외부 참조 클래스의 다큐멘테이션에의 링크를 작성합니다. 인수를 1 개 취합니다.

  • extdocURL 는, 링크처로서 지정하는, javadoc 에 의해 생성된 외부 문서를 포함한 디렉토리의 절대 URL 또는 상대 URL 입니다. 나중에를 나타냅니다. 이 디렉토리내에패키지 리스트파일이 존재하고 있지 않으면 안됩니다. 존재하지 않는 경우는,-linkoffline 를 사용합니다. Javadoc 툴은,팍 케이지 리스트파일로부터 패키지명을 읽어내, 이러한 패키지를 그 URL 에 링크합니다. Javadoc 툴을 실행하면(자), 작성되는 <A HREF> 링크내에 extdocURL 의 값이 그대로 카피됩니다. 따라서,extdocURL 는 파일에의 URL 는 아니고 「디렉토리에의 URL」가 아니면 안됩니다.

    extdocURL 에의 절대 링크를 사용하면(자), 유저의 문서를 임의의 Web 사이트상의 문서에 링크할 수 있습니다. 상대 위치에 링크하는 것만으로 좋은 경우는 상대 링크를 사용할 수 있습니다. 상대 링크를 사용하는 경우,-d (을)를 사용해, 생성처 디렉토리로부터 링크되는 패키지가 있는 디렉토리의 상대 패스를 지정할 필요가 있습니다.

    통상, 절대 링크를 지정하는 경우는,http: 링크를 사용합니다. Web 서버를 가지지 않는 파일 시스템에 링크하는 경우는,file: 링크를 사용할 수 있습니다. 다만, 이 방법은, 모든 유저가 생성된 같은 파일 시스템을 공유하는 문서에 액세스 할 필요가 있는 경우 이외는 사용하지 말아 주세요.

    모든 경우, 모든 operating system로, 절대 URL 와 상대 URL, 「http:」베이스와 「file:」베이스에 관계없이, slash를 단락지어 문자로서 사용합니다 (URL Memo 로 지정).

    http: 베이스의 절대 링크:
    -link http://<host>/<directory>/<directory>/.../<name>
    file: 베이스의 절대 링크:
    -link file://<host>/<directory>/<directory>/.../<name>
    상대 링크:
    -link <directory>/<directory>/.../<name>

javadoc 의 실행시에복수의 -link 옵션을 지정해, 복수의 문서에의 링크를 작성할 수도 있습니다.

-linkoffline 와 -link 의 선택
다음과 같은 경우는,-link 옵션을 사용합니다.
  • 외부 API 문서에의 상대 패스를 사용하는 경우
  • 외부 API 문서에의 절대 URL 를 사용하는 경우 (프로그램이 그 URL 에 접속해, 독해를 실시하는 것이 쉘에 의해 허가되고 있는 경우)
다음과 같은 경우는,-linkoffline 옵션을 사용합니다.
  • 외부 API 문서에의 절대 URL 를 사용하는 경우 (프로그램이 그 URL 에 접속해, 독해를 실시하는 것이 쉘에 의해 허가되어 있지 않은 경우). 이러한 상황은, 링크처의 문서가 파이어 월(fire wall)의 저쪽 편에 있는 장소 합에 발생한다

외부 문서에의 절대 링크의 사용예 - http://java.sun.com/j2se/1. 4.2/docs/api 안의java.lang,java.io, 그 외의 Java 2 플랫폼 패키지에 링크하고 싶은 경우가 있습니다. 다음의 커멘드는,com.mypackage 패키지의 문서와 Java 2 플랫폼 패키지에의 링크를 생성합니다. 생성된 문서에는, 예를 들어 클래스 트리내의 Object 클래스에의 링크가 포함되어 있습니다. (-sourcepath 나 -d 등의 다른 옵션은 표시되지 않는다)

  % javadoc -link http://java.sun.com/j2se/1. 4.2/docs/api com.mypackage
      
외부 문서에의 상대 링크의 사용예 - 2 개의 패키지가 있어, 그 문서가 Javadoc 툴을 여러 차례 실행한 결과 생성된 것이다고 합니다. 게다가 이러한 문서가 상대 패스로 분할되고 있다고 합니다. 이 예의 경우, 2 개의 패키지는, API 인 com.apipackage 와 SPI (서비스 프로바이더 인터페이스) 인com.spipackage 입니다. 문서의 포함처는 docs/api/com/apipackage 패키지와docs/spi/com/spipackage 패키지입니다. API 패키지의 문서가 벌써 생성되고 있어, 현재의 디렉토리가docs 인 경우, 다음의 커멘드를 실행하는 것에 의해, 이 API 문서에의 링크를 가지는 SPI 패키지를 문서화합니다.
  % javadoc -d . /spi -link ../api com.spipackage
      

-link 인수는, 생성처 디렉토리 (docs/spi) 의 상대 패스입니다.

상세 - -link 옵션을 사용하면(자), 「코드로부터는 참조되고 있어도, Javadoc 의 이번 실행에서는 문서화 되지 않는다」클래스에 링크할 수 있게 됩니다. 링크로부터 유효한 페이지로 이동할 수 있도록(듯이) 하려면 , 그러한 HTML 페이지가 있는 장소를 조사해 그 자리소를 extdocURL (으)로 지정할 필요가 있습니다. 이 옵션을 사용하면(자), 예를 들어, 써드파티의 문서로부터,http://java.sun.com 에 있는 java. * 의 문서에 링크할 수가 있습니다.

이번 실행으로 Javadoc 에 의해 생성되는 문서내의 API 만을 대상으로 링크를 작성하는 경우는,-link옵션을 생략 합니다. -link 옵션이 지정되어 있지 않은 경우, Javadoc 툴은, 외부 참조된 문서에의 링크를 작성하지 않습니다. 이것은, 그 문서가 존재할지 어떨지, 및 존재하는 경우는 그 자리소를 판별 성과 없기 때문입니다.

이 옵션에서는, 생성 문서내의복수의 장소에 링크를 작성할 수 있습니다.

또, 이 옵션을 사용하면(자), 복수의 패키지군의 사이에크로스 링크를 작성 할 수도 있습니다. 즉, 어느 일식의 패키지에 대해서 javadoc 를 실행한 뒤, 다른 일식의 패키지에 대해서 javadoc (을)를 실행해, 이것들 2 개의 패키지군의 사이에 크로스 링크를 작성할 수 있습니다.

클래스의 참조 방법 - 외부 참조 클래스에의 링크를, 텍스트 라벨 만이 아니고 실제로 표시하려면 , 다음의 방법으로 클래스를 참조할 필요가 있습니다. 메소드의 본체로 클래스를 참조 하는 것 만으로는 충분하지는 않습니다. import 문 또는 선언으로 참조할 필요가 있습니다. 다음에, 클래스 java.io.File(을)를 참조하는 방법의 예를 나타냅니다.

  • 모든 종류의 import 문의 경우: 와일드 카드에 의한 임포트, 이름에 의한 명시적인 임포트, 또는java.lang. * 에 대한 자동적인 임포트. 예를 들어, 다음과 같이 하면 충분합니다. 
    import java.io. *;
    1.3.x 및 1.2.x 에서는, 이름에 의한 명시적인 임포트 뿐입니다. 와일드 카드에 의한 임포트문도, 자동 임포트 java.lang. * 도 사용할 수 없습니다.

  • 선언의 경우:
    void foo(File f) {}
    이 참조를 사용해, 메소드, constructor    , 필드, 클래스, 또는 인터페이스의 리턴 타입 또는 파라미터 타입에 두는지, implements,extends 문장 또는 throws 문에 둡니다.

이 결과,-link 옵션을 사용해도, 이 제한을 위해서(때문에) 잘못해 표시되지 않는 많은 링크가 다수 발생할 가능성이 있습니다. 텍스트는 하이퍼 텍스트(hyper text) 링크를 뒤따를 수 있고 하지않고서 표시됩니다. 이러한 링크가 표시하는 경고로부터, 이 링크를 인식할 수 있습니다. 클래스를 올바르게 참조해, 거기에 따라 링크를 추가하기 위한 좀 더도 안 전인 방법은 위에서 설명했던 대로, 해당의 클래스를 임포트 하는 것입니다.

패키지 리스트 - -link 옵션은,package-list 라는 이름의 파일을 요구합니다. 이 파일은, Javadoc 툴에 의해 생성되어-link 에 의해 지정한 URL 에 존재합니다. package-list 파일은, 그 자리소에 있는 문서화 된 패키지의 이름의 리스트가 들어간 단순한 텍스트 파일입니다. 전의에서는,Javadoc 툴은 지정된 URL 에 있는 package-list (이)라는 이름의 파일을 찾아, 패키지명을 읽어들여, 그 URL 에 있는 그러한 패키지에의 링크를 작성했습니다.

예를 들어, Java 2 Platform v1. 4 API 의 패키지 리스트는 http://java.sun.com/j2se/1. 4.2/docs/api/package-list 에 있어, 다음과 같은 내용으로 시작되어 있습니다.

  java.applet  
java.awt
java.awt.color
java.awt.datatransfer
java.awt.dnd
java.awt.event
java.awt.font
etc.

-link 옵션을 지정하지 않고 javadoc 를 실행했을 경우,외부 참조 클래스에 속하는 이름을 찾아내면(자),javadoc (은)는 그 이름을 링크를 가지지 않는 형태로 출력합니다. 한편,-link 옵션을 지정했을 경우는, 지정한 extdocURL 에 있는 package-list 파일로부터 해당하는 패키지명이 검색됩니다. 패키지명이 발견되면(자),extdocURL 하지만 이름의 전에 부가됩니다.

모든 링크가 올바르게 기능하기 위해서는, 외부 참조의 모든 문서가, 지정한 URL 에 존재하고 있지 않으면 안됩니다. Javadoc 툴은, 지정된 package-list 가 존재할지 어떨지를 조사하는 것만으로, 지정되었다 URL 에 목적의 페이지가 존재할지 어떨지는 체크하지 않습니다.

복수의 링크 - 복수의 -link 옵션을 지정하면(자), 생성된 임의의 수의 외부 문서에 대해서 링크를 설정할 수 있습니다.  Javadoc 1.2 에는, 복수의 -link 옵션을 지정할 수 없다고 하는 버그가 있습니다. 이것은 1.2. 2 로 수정되었습니다.

링크하는 외부 문서 마다, 다음과 같이 다른 링크 옵션을 지정합니다.

   % javadoc -link extdocURL1 -link extdocURL2 ...-link extdocURLn com.mypackage

extdocURL1,   extdocURL2,   ... extdocURLn (은)는, 각각 외부 문서의 루트를 가리켜, 각 루트에는package-list (이)라는 이름의 파일이 들어가 있습니다.

크로스 링크 - 아직 생성되어 있지 않은 2 개이상의 문서를 크로스 링크하는 경우는, 「bootstrap」가 필요하게 됩니다. 즉, 어느 문서에 대해서도 package-list 하지만 존재하고 있지 않는 경우는, 최초의 문서에 대해서 javadoc 툴을 실행하는 시점에서, 2 번째의 문서의 package-list 하지만 아직 존재하고 있습니다. 따라서, 외부 링크를 작성하려면 , 2 번째의 문서를 생성한 후에, 최초의 문서를 다시 생성할 필요가 있습니다.

이 경우, 최초의 문서 생성의 목적은, 그 문서의 package-list (을)를 작성하는 것입니다. 패키지명을 모두 파악하고 있는 경우는, package-list 를 수동으로 작성할 수도 있습니다. 다음에, 2 번째의 문서와 그 외부 링크를 생성합니다. 필요한 외부의 package-list 파일이 존재하지 않는 경우, Javadoc 툴은 경고를 표시합니다.

-linkoffline  extdocURL  packagelistLoc 
이 옵션은,-link 옵션을 바꾼 것입니다. 어느쪽이나, javadoc 에 의해 생성되었다외부 참조 클래스의 문서에의 링크를 작성합니다. Javadoc 툴 자체가 오프 라인이 되어 있을 때 (Web 접속을 사용해 문서에 액세스 할 수 없을 때), Web 상의 문서에 링크하려면 ,-linkoffline 옵션을 사용합니다.

엄밀하게는, 외부 문서의 package-list 파일에 액세스 할 수 없을 때, 또는 이 파일이 extdocURL 로 지정된 장소와는 다른 장소 (통상,packageListLoc 그리고 지정 가능한 로컬인 장소)에 존재할 때,-linkoffline 를 사용합니다. 따라서,extdocURL 에 WWW 상에서 밖에 액세스 할 수 없는 경우는,-linkoffline 를 지정하는 것으로써, 문서의 생성시에 javadoc 툴이 Web 에 접속할 수 없으면 안 된다고 하는 제약이 없어집니다.

게다가문서를 갱신하기 위한 「해킹」으로서의 사용도 가능합니다. 팍케이 지세트 전체에 대해서 javadoc 를 실행한 뒤, 변경한 일부의 패키지인 만큼 대해 javadoc (을)를 실행합니다. 이렇게 해, 갱신된 파일을, 오리지날의 파일 세트에 삽입할 수 있도록(듯이) 합니다. 예를 나중에 가리키겠습니다.

-linkoffline 옵션은 인수를 2 개 취합니다. 최초의 인수는 <a href> 링크에 짜넣어지는 캐릭터 라인을 지정하는 인수, 2 번째의 인수는 package-list 의 검색 장소를 지정하는 인수입니다.

  • extdocURL 는, 링크처로서 지정하는, javadoc 에 의해 생성된 외부 문서를 포함한 디렉토리의 절대 URL 또는 상대 URL 입니다. 상대 링크를 사용하는 경우,-d (을)를 사용해, 생성처 디렉토리로부터 링크되는 패키지의 루트의 상대 패스를 지정할 필요가 있습니다. 자세한 것은,-link 옵션의 extdocURL 를 참조해 주세요.

  • packagelistLoc 에는, 외부 문서의 package-list 파일이 들어가 있는 디렉토리의 패스 또는 URL 를 지정합니다. URL (http: 또는 file:) 또는 파일 패스를 지정할 수 있습니다. 또, 절대 패스와 상대 패스의 어디라도 괜찮습니다. 상대 패스의 경우는, javadoc 하지만 실행되는 커런트 디렉토리로부터의 상대 패스로 해서 지정합니다. package-list 그렇다고 하는 파일명은 포함하지 말아 주세요.

javadoc 의 1 회의 실행으로,복수의 -linkoffline 옵션을 지정할 수 있습니다. 1.2. 2 보다 전은, 복수의 옵션을 지정할 수 없었습니다.

외부 문서에의 절대 링크의 사 용례 - http://java.sun.com/j2se/1. 4.2/docs/api 내의java.lang,java.io, 그 외의 Java 2 플랫폼 패키지에 링크하고 싶지만, 쉘로부터 Web 에 액세스 할 수 없는 경우가 있습니다. 이 경우는, 브라우저로 http://java.sun.com/j2se/1. 4.2/docs/api/package-list 에 있는 package-list 파일을 열어, 로컬 디렉토리에 보존합니다. 게다가 2 번째의 인수packagelistLoc 에 이 로컬 카피의 장소를 지정합니다. 이 예에서는, 패키지 리스트 파일은 커런트 디렉토리 「」에 보존되고 있고 . 다음의 커멘드는, Java 2 플랫폼 API 에의 링크를 포함한,com.mypackage 패키지의 문서를 생성합니다. 생성된 문서에는, 예를 들어 클래스 트리내의 Object클래스에의 링크가 포함되어 있습니다. (-sourcepath 등의 다른 필요한 옵션은 표시되지 않는다)

% javadoc -linkoffline http://java.sun.com/j2se/1. 4.2/docs/api .  com.mypackage
      

외부 문서에의 상대 링크의 사용예 - 통상,-linkoffline 에 상대 패스를 지정할 것은 없습니다. -link 로 같은 것이 생기기 때문입니다. -linkoffline (을)를 사용할 때,package-list 에는 통상 로컬의 파일을 지정합니다. 상대 링크를 사용할 때도, 링크처의 파일에는 통상 로컬의 파일을 지정합니다. 따라서,-linkoffline 의 2 개의 인수에 다른 패스를 지정할 필요는 없습니다. 2 개의 인수가 동일한 경우는,-link 를 사용할 수 있습니다. -link 의 상대 링크의 예를 참조해 주세요.

package-list 파일을 수동으로 작성 - package-list 파일이 아직 존재하지 않아도, 문서의 링크처의 패키지명을 알 수 있고 있는 경우는, 이 파일을 스스로 작성해,packagelistLoc 그리고 그 패스를 지정할 수가 있습니다. com.apipackage 가 최초로 생성되어com.spipackage 의 패키지 리스트가 존재하지 않는다고 하기 전출의 예를 참조해 주세요. 이 방법은, 패키지명은 알고 있지만, 아직 공개되어 있지 않은, 새로운 외부드 큐먼트에 링크하는 문서를 생성할 필요가 있는 경우에 편리합니다. 또,package-list파일이 생성되지 않는 Javadoc 1.0 이나 1.1 등으로 생성된 패키지전용으로 package-list 파일을 작성할 경우에도, 이 방법을 이용합니다. 같이 2 개의 회사가 미공개의 package-list 파일을 공유할 수도 있기 (위해)때문에, 크로스 링크를 설정한 문서를 동시에 릴리스 하는 일도 가능합니다.

복수의 문서에의 링크 - -linkoffline (은)는, 참조처의 생성 문서 마다 1 개(살)씩 지정합니다. 다음의 예에서는, 알기 쉽게 하기 위해서 옵션 마다 행을 나누고 있습니다.

javadoc -linkoffline extdocURL1 packagelistLoc1 \
          -linkoffline 
extdocURL2 packagelistLoc2 \
          ...

문서의 갱신 - 전술의 -linkoffline 옵션의 또 하나의 용도는, 프로젝트에 대량의 패키지가 포함되어 있어, 벌써 트리 전체에 대해서 javadoc 의 실행이 완료하고 있는 경우에, 다음의 실행에서는, 소량의 변경을 재빠르게 더한 뒤, 소스 트리의 매우 일부에 대해서 만여라 javadoc (을)를 재실행하는 경우에 편리합니다. 이것은, 다큐멘테이션 코멘트에 대해서만 변경을 더해 선언은 변경하지 않는 경우에게만 올바르게 처리되므로, 학킨 그와 같은 것입니다. 원시 코드의 선언을 추가, 삭제, 또는 변경했을 경우는, 색인, 패키지 트리, 상속되는 멤버의 리스트, 「사용」페이지등의 장소에서, 링크가 망가지는 일이 있습니다.

우선, 이번 실행으로 사용하는 새로운 생성처 디렉토리 (update) (을)를 작성합니다. 원의 생성처 디렉토리의 이름이 html 라고 합니다. 무엇보다 단순한 예에서는,html 디렉토리의 친디렉토리에 이동 (cd)합니다. -linkoffline 의 최초의 인수에 커런트 디렉토리 「.」(을)를 지정해, 2 번째의 인수에 html 에의 상대 패스를 지정합니다. 여기서,package-list 하지만 검색됩니다. 갱신 대조의 패키지의 패키지명만을 지정해 주세요.

  % javadoc -d update -linkoffline .  html com.mypackage
      
Javadoc 툴의 종료후,update/com/package 내의 생성된 클래스의 페이지를 카피해 (개요나 색인을 제외하다),html/com/package 내의 원의 파일에 덧쓰기합니다.

-linksource 
각 원시 파일 (행 번호 첨부)의 HTML 버젼을 작성해, 표준 HTML 문서로부터 원시 파일에의 링크를 추가합니다. 링크는, 원시 파일내에 선언되고 있는 클래스, 인터페이스, constructor    , 메속 드, 필드에 대해서 작성됩니다. 디폴트 constructor    , 생성된 클래스에 대해서는 작성되지 않습니다.

이 옵션은,-public,-package,-protected,-private 의 각 옵션과는 관계없이, 비공개의 클래스, 필드, 비공개의 메소드의 본체를 시작으로 하는 짜넣어진 원시 파일내의 모든 비공개 구현의 상 세를 공개합니다. -private 옵션을 지정하지 않는 한, 비공개의 클래스나 인터페이스의 일부에는, 링크를 개입시켜 액세스 할 수 없는 것이 있습니다.

각 링크는, 그 선언내의 식별자명 위에 작성됩니다. 예를 들어,Button 클래스의 소스코드헤의 링크는, 「Button」라고 하는 말 위에 작성됩니다.

    public class Button
    extends Component
    implements Accessible
      
Button 클래스의 getLabel() 메소드의 원시 코드에의 링크는, 「getLabel」라고 하는 말 위에 작성됩니다.
    public String getLabel()

-group  groupheading  packagepattern:packagepattern:...
개요 페이지의 복수의 패키지를, 지정한 그룹으로 나누어, 그룹 마다 겉(표)를 작성합니다. 각 그룹은, 각각 다른 -group 옵션으로 지정합니다. 이러한 그룹은, 커멘드행으로 지정한 순서로 페이지에 표시됩니다. 각 그룹내에서는, 패키지가 알파벳순서에 늘어놓고 . 지정한 -group 옵션 마다,packagepattern식의 리스트와 일치하는 패키지가, 표제 groupheading 를 가지는 1 개의 표에 정리해 표시됩니다.

  • groupheading 에는, 임의의 텍스트를 지정할 수 있어 공백을 포함할 수가 있습니다. 지정한 텍스트는, 그룹의 표견 방편이 됩니다.

  • packagepattern 에는, 임의의 패키지명, 또는 임의의 패키지명의 선두 부분과 거기에 계속되는 1 개의 asterisk (*) (을)를 지정할 수 있습니다. asterisk는, 「임의의 문자에 일치한다」라고 하는 의미의 와일드 카드입니다. 와일드 카드로서 지정할 수 있는 것은, asterisk만으로 . 1 개의 그룹에는, 구두점 (:)으로 단락지어 복수의 패턴을 포함할 수가 있습니다.
주: 패턴이나 패턴 리스트내에서 asterisk를 사용하는 경우는,"java.lang*:java.util" (와)과 같이, 패턴 리스트를 인용부호로 둘러쌀 필요가 있습니다.

-group 옵션이 지정되어 있지 않은 경우는, 모든 패키지가, 「패키지」라고 하는 표제의 1 개의 그룹에 넣어집니다. 문서화 되는 패키지안에, 지정한 그룹의 어느 그룹에도 들어가지 않는 패키지가 있는 경우, 이러한 팍 케이지는 「그 외의 패키지」라고 하는 표제를 가지는 독립한 그룹에 넣어집니다.

예를 들어, 다음과 같이 옵션을 지정하면(자), 문서화 되는 5 개의 패키지는, 코어 패키지, 확장 기능 패키지, 및 그 외의 패키지로 나눌 수 있습니다. 「java.lang*」에서는, 마지막 닷을 지정해 (이)라고 없는 것에 주목해 주세요. 「java.lang. *」(와)과 같이 닷을 넣으면(자), java.lang 패키지는 제외되게 됩니다.

  % javadoc -group "Core Packages" "java.lang*:java.util"
-group "Extension Packages" "javax. *"
java.lang java.lang.reflect java.util javax.servlet java.new
이 결과, 다음과 같은 그룹화를 합니다.
코어 패키지
java.lang
java.lang.reflect
java.util
확장 기능 패키지
javax.servlet
그 외의 패키지
java.new

-nodeprecated
추천 되지 않는 API 를 문서에 생성하지 않게 합니다. 이 옵션을 지정하면(자), -nodeprecatedlist 옵션을 지정했을 경우와 같은 효과가 있는 것에 가세해, 문서외의 부분 전체에서도, 추천 되지 않는 API 하지만 생성되지 않습니다. 이 옵션은, 코드를 기술하고 있을 때, 추천 되지 않는 코드에 의해 기분을 가라앉혀진 구 없는 경우에 편리합니다.

-nodeprecatedlist
추천 되지 않는 API 의 리스트를 포함한 파일 (deprecated-list.html), 및 네비게이션 바의 그 페이지로의 링크가 생성되지 않게 합니다. 다만, 문서 인가의 부분에서는, 추천 되지 않는 API 가 생성됩니다. 이 옵션은, 추천 되지 않는 API 하지만 원시 코드에 포함되지 않고, 네비게이션 바를 깨끗이보여 주고 싶은 경우에 편리합니다.

-nosince
생성 문서로부터,@since 태그에 대응하는 「도입된 버젼」섹션을 생략 합니다.

-notree
생성 문서로부터, 클래스 및 인터페이스의 계층 페이지를 생략 합니다. 이러한 페이지는, 네비게이션 바의 「Tree」보타 를 사용한다고 표시됩니다. 디폴트에서는, 계층이 생성됩니다.

-noindex
생성 문서로부터, 색인을 생략 합니다. 디폴트에서는, 색인이 생성됩니다.

-nohelp
출력의 각 페이지의 최상부와 최하부에 있는 네비게이션 바로부터 「헬프」링크를 생략 합니다.

-nonavbar
생성되는 페이지의 최상부와 최하부에 표시되는 네비게이션 바, 헤더, 및 footer를 생성하지 않게 합니다. 이 옵션은, bottom 옵션에는 영향을 주지 않습니다. -nonavbar 옵션은, 인쇄하기 위해(때문에)인 만큼 파일을 PostScript 또는 PDF 로 변환하는 경우 등, 내용만이 중요해, 네비게이션의 필요가 없는 경우에 편리합니다.

-helpfile  path/filename
상부와 하부의 네비게이션 바의 「헬프」링크의 링크처가 되는 대체 헬프 파일 path/filename 의 패스를 지정합니다. 이 옵션이 지정되어 있지 않은 경우, Javadoc 툴은, 하드 코드 되고 있는 헬프 파일help-doc.html (을)를 자동적으로 작성합니다. 이 옵션을 사용하면(자), 그 디폴트의 동작을 오버라이드(override) 할 수 있습니다. filename 에는 어떤 파일명이라도 지정할 수 있어help-doc.html 에는 한정되지 않습니다. Javadoc 툴은, 이 옵션에서의 지정에 따라, 네비게이션 바에 있는 링크에 조정을 더합니다. 다음에 예를 나타냅니다.
  % javadoc -helpfile /home/user/myhelp.html java.awt
      
-stylesheetfile  path/filename
대체 HTML 스타일 시트 파일의 패스를 지정합니다. 이 옵션이 지정되어 있지 않은 경우, Javadoc 툴은, 하드 코드 되고 있는 스타일 시트 파일 stylesheet.css (을)를 자동적으로 작성합니다. 이 옵션을 사용하면(자), 그 디폴트의 동작을 오버라이드(override) 할 수 있습니다. filename 에는 어떤 파일명이라도 지정할 수 있어stylesheet.css 에는 한정되지 않습니다. 다음에 예를 나타냅니다.
  % javadoc -stylesheetfile /home/user/mystylesheet.css com.mypackage
      
-serialwarn
@serial 태그가 없는 경우는, 컴파일시에 경고를 생성합니다. 디폴트에서는, Javadoc 1.2. 2 이후의 버젼에서는, 직렬화의 경고는 생성되지 않습니다 1.2. 2 보다 전의 초기 버젼에서는, 경고가 생성됩니다. 이 옵션을 사용하면(자), 직렬화의 경고가 표시되므로, 디폴트의 직렬화 가능 필드와 writeExternal 메소드를 적절히 문서화하는데 도움이 됩니다.

-charset  name
이 문서용의 HTML 캐릭터 세트를 지정합니다. 이 이름은,IANA Registry 그리고 주어진, 추천 되는 MIME 명이 아니면 안됩니다. 다음에 예를 나타냅니다.
  % javadoc -charset "iso-8859-1" mypackage
      
생성되는 모든 페이지의 선두에, 다음의 행이 삽입됩니다.
   <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
이 META 태그에 대해서는,HTML 의 표준 (4197265 및 4137321)(을)를 참조해 주세요.

-encoding 및 -docencoding 도 참조해 주세요.

-docencoding  name
생성되는 HTML 파일의 인코딩을 지정합니다. 이 이름은,IANA Registry 그리고 주어진, 추천 되는 MIME 명이 아니면 안됩니다. 이 옵션을 생략 하면서 -encoding (을)를 사용했을 경우, 생성되는 HTML 파일의 encode는, -encoding 에 의해 결정할 수 있습니다. 다음에 예를 나타냅니다.
  % javadoc -docencoding "ISO-8859-1" mypackage
      
-encoding 및 -charset 도 참조해 주세요.

-keywords
HTML 메타키워드타그를, 클래스 마다 생성되는 파일에 추가합니다. 이러한 태그는, 메타타그를 검색하는 써치엔진이 페이지를 찾아내는 경우에 도움이 되어 . 인터넷 전체를 검색하는 많은 써치엔진은, 페이지가 메타타그를 오용 하고 있기 (위해)때문에, 메타타그를 조사하지 않습니다. 한편, 검색을 자신의 Web 사이트로 한정하고 있는 기업에서는, 써치엔진이 메타타그를 조사하는 것에 의해 메리트를 얻을 수 있습니다.

메타타그에는, 클래스의 완전 수식명과 필드 및 메소드의 수식되어 있지 않은 이름이 포함됩니다. constructor    은, 클래스명과 동 글자이기 (위해)때문에 포함되지 않습니다. 예를 들어, 클래스 String 는 다음의 키워드로 개시합니다.

     <META NAME="keywords" CONTENT="java.lang.String class">
<META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER">
<META NAME="keywords" CONTENT="length()">
<META NAME="keywords" CONTENT="charAt()">

-tag  tagname:Xaoptcmf:"taghead"
Javadoc 툴이 다큐멘테이션 코멘트내의 인수를 1 개 취하는 단순한 커스텀브 락 태그 @tagname 를 해석할 수 있도록(듯이) 합니다. 이것에 의해, Javadoc 툴은 태그명의 「스펠링」을 실시할 수가 있으므로, 원시 코드 안의 모든 커스텀 태그에 -tag 옵션을 짜넣는 것을 추천합니다. 이번 실행으로 출력되지 않는 태그는,X (을)를 붙여무효로 합니다.

구두점 (:)은 항상 단락지어 문자가 됩니다. tagname 그리고 구두점을 사용하려면 ,「태그명에서의 구두점의 사용」을 참조해 주세요.

-tag 옵션은, 태그의 표제 「taghead」를 굵은 글씨로 출력합니다. 그 다음의 행에는, 이 옵션의 인수로 지정한 텍스트가 계속됩니다. 이하의를 참조해 주세요. 블록 태그와 같이, 이 인수의 텍스트에는 인 라인 태그를 포함하는 것이로 옵니다. 이 인 라인 태그도 해석됩니다. 출력은, 인수를 1 개 취하는 표준의 태그 (@return,@author 등)의 출력과 자주(잘) 닮았습니다. taghead 를 생략 하면(자),tagname가 표제로서 표시됩니다.

태그의 배치 - 인수의 Xaoptcmf 부분은, 원시 코드내의 태그를 배치할 수 있는 위치와X (을)를 사용해 이 태그를 무효로 할 수 있을지 어떨지를 특정합니다. 태그의 배치 위치를 제한하지 않는 경우는 a(을)를 지정합니다. 그 이외의 문자의 편성도 가능합니다.

    X (태그의 무효화)
    a (모든 위치)
    o (개요)
    p (패키지)
    t (형태 즉 클래스 및 인터페이스)
    c (constructor    )
    m (메소드)
    f (필드)

싱글 태그의 예 - 원시 코드내의 임의의 위치에서 사용으로 기분태그의 태그 옵션의 예를 나타냅니다.

    -tag todo:a:"To Do:"
@todo 를 constructor    , 메소드, 필드만으로 사용하는 경우는, 이하의 옵션을 사용합니다.
    -tag todo:cmf:"To Do:"
위의 예의 마지막 구두점 (:)은, 파라미터 단락자입니다만, 표제 텍스트의 일부가 되어 있습니다 (이하의 예를 참조). 다음의 예의 같게,@todo 태그를 포함한 원시 코드에서는, 몇개의 태그 옵션을 사용합니다.
     @todo The documentation for this method needs work. 
이 행은, 다음과 같은 출력을 생성합니다.
To Do:
The documentation for this method needs work.
태그명에서의 구두점의 사용 - 구두점은, backslash로 이스케이프 하면(자), 태그 나우치에서 사용할 수 있습니다. 다음의 다큐멘테이션 코멘트를 예를 듭니다.
    /**
* @ejb:bean
*/
다음의 태그 옵션을 사용합니다.
    -tag ejb\\:bean:a:"EJB Bean:"
태그명의 스펠링 (태그의 무효화) - 원시 코드내에 배치한 일부의 커스텀 태그의 출력을 억제하고 싶은 경우가 있습니다. 이 경우도, 원시 코드내에 모든 태그를 배치해, 출력을 억제하지 않는 타 그를 유효하게 해, 출력을 억제하는 태그를 무효로 합니다. 태그를 무효로 하려면 ,X (을)를 지정합니다. 지정하지 않으면 그 태그는 유효하게 됩니다. 이것에 의해, Javadoc 툴은, 검출한 태그가 입력 미스등에 의한 미지의 태그일지 어떨지를 특정할 수 있습니다. 미지의 태그를 검출했을 경우, Javadoc 툴은 경고를 출력합니다.

벌써 배치되고 있는 값에 X 를 추가할 수 있습니다. 이렇게 해 두면,X (을)를 삭제하는 것만으로 태그를 유효하게 할 수가 있습니다. 예를 들어, @todo 태그의 출력을 억제하고 싶은 경우, 다음과 같이 지정합니다.

    -tag todo:Xcmf:"To Do:"
한층 더 단순한 지정 방법도 있습니다.
    -tag todo:X

구문 -tag todo:X 는,@todo 가 taglet 그리고 정의되고 있는 경우도 유효합니다.

태그의 순서 - -tag ( 및 -taglet ) 옵션의 순서에 의해, 그 출력 순서가 결정됩니다. 커스텀 태그와 표준 태그를 조합해 사용할 수도 있습니다. 표준 태그의 태그 옵션은, 순서 (을)를 결정하기 (위해)때문에만의 플레이스홀더입니다. 이것들은 표준 태그명만을 사용합니다. (표준 태그의 부표제는 변경할 수 없다. ) 이것에 대해서는, 이하의 예로 설명 합니다.

-tag 가 없는 경우,-taglet 의 위치에 의해 그 순서가 결정됩니다. 태그가 양쪽 모두 존재하는 경우, 커멘드행의 마지막에 있는 편이 그 순서를 결정합니다. 이것은, 태그나 태그 렛이 팽이 드행으로 지정된 차례로 처리되기 (위해)때문에입니다. 예를 들어,-taglet 와 -tag 의 양쪽 모두가 todo 라는 이름을 가지고 있는 경우, 커멘드행의 마지막에 있는 편이 순서를 결정합니다.

태그의 완전 세트의 예 - 이 예에서는, 출력의 「Parameters」와「Throws」의 사이에 「To Do」를 삽입합니다. X 를 사용해, @example 가, 원시 코드내의 이번 실행에서는 출력되지 않는 태그인 것을 지정합니다. @argfile (을)를 사용하는 경우는, 다음과 같이, 인수 파일내의 다른 행에 태그를 배치할 수 있습니다. 행의 계속을 나타내는 문자는 불필요합니다.

   -tag param
-tag return
-tag todo:a:"To Do:"
-tag throws
-tag see
-tag example:X

javadoc 가 다큐멘테이션 코멘트를 해석할 때에 검출된 태그 가운데, 표준 태그에서도 -tag (이)나 -taglet 그리고 건네받는 태그도 아닌 것은, 미지의 태그라고 보여집니다. 이 경우, 경고가 슬로우 됩니다.

표준 태그는, 최초, 디폴트의 순서로 리스트내에 내부적으로 포함됩니다. -tag 옵션을 사용하면(자), 이 리스트에 추가되는 태그, 즉 표준 태그의 위치가 디폴트의 위치로부터 이동합니다. 즉, 표준 태그에 -tag 옵션을 붙이지 않으면, 이것들은 디폴트의 위치에 배치된 채로 있습니다.

경합의 회피 - 고유의 이름 공간을 슬라이스 하고 싶은 경우는, 패키지에 대해서 사용한 것 같은 닷 단락의 명명 규칙을 사용합니다 (예: com.mycompany.todo). Sun 는, 향후도 이름에 닷을 포함하지 않는 표준 태그를 작성합니다. 유저가 작성한 태그는, Sun 하지만 제공하는 같은 이름의 태그의 동작을 오버라이드(override) 합니다. 즉, 유저가 @todo (이)라는 이름의 태그 또는 태그 렛을 작성한 경우, Sun 하지만 나중에 같은 이름의 표준 태그를 작성해도, 그 태그 또는 태그 렛은 원의 동작을 보관 유지합니다.

-taglet 옵션을 사용해, 보다 복잡한 블록 태그 또는 커스텀 인 라인 태그도 작성할 수 있습니다.

-taglet  class
그 태그의 문서의 생성에 사용하는 도크 렛을 기동하기 위한 클래스 파일을 지정합니다. 클래스의 완전 지정명을 지정해 주세요. 이 태그 렛은, 커스텀 태그의 텍스트 인수의 수도 정의합니다. 태그 렛은, 이러한 인수를 받아들여 처리해, 출력을 생성합니다. 외부 문서와 샘플 태그 렛에 대해서는, 이하를 참조해 주세요.

태그 렛은, 블록 태그 또는 인 라인 태그로 편리합니다. 태그 렛은 임의의 수의 인수를 취할 수가 있습니다. 또, 텍스트를 굵은 글씨 (으)로 하는, 조목별로 나누어 쓴 글을 작성하는, 텍스트를 파일에 써내는, 그 외의 프로세스를 개시하는 등의 커스텀 동작을 구현할 수 있습니다.

태그 렛으로 지정할 수 있는 것은, 태그의 배치 장소와 배치 형식만입니다. 그 외의 모든 결정은, 도크 렛에 의해 행해집니다. 타그렉 트를 사용해도, 포함 클래스의 리스트로부터 클래스명을 삭제하는 등의 처리는 실행할 수 없습니다. 다만, 태그의 텍스트를 파일에 출력하거나 다른 프로세스를 방아쇠 하는 등의 부작용은 얻을 수 있습니다.

태그 렛의 패스를 지정하려면 ,-tagletpath 옵션을 사용합니다. 이하는, 생성되는 페이지의 「Parameter」와「Throws」의 사이에 「To Do」태그 렛을 삽입하는 예입니다.

    -taglet com.sun.tools.doclets.ToDoTaglet
-tagletpath /home/taglets
-tag return
-tag param
-tag todo
-tag throws
-tag see

-tag 옵션 대신에 -taglet 옵션을 사용할 수도 있습니다만, 읽기 쉬움을 고려한다면,-tag 옵션을 사용하는 편이 좋을 것입니다.

-tagletpath  tagletpathlist
taglet 클래스 파일 (. class)의 검색 패스를 지정합니다. tagletpathlist 에는, 구두점 (:)으로 단락지어 복수의 패스를 포함할 수가 있습니다. Javadoc 툴은, 지정된 패스 이하의 모든 서브 디렉토리를 검색합니다.

-docfilessubdirs 
doc-files 디렉토리의 깊은 카피를 유효하게 합니다. 즉, 카피 먼저는, 서브 디렉토리와 모든 컨텐츠가 카피됩니다. 예를 들어,doc-files/example/images 디렉토리와 그 중의 파일이 카피됩니다. 여기에서도,서브 디렉토리를 제 밖 하는 지정이 가능합니다.

-excludedocfilessubdir  name1:name2...
소정의 이름의 doc-files 서브 디렉토리를 제외합니다. 이것에 의해, SCCS (와)과 그 외의 원시 코드 제어 서브 디렉토리의 카피를 막습니다.

-noqualifier  all  |  packagename1:packagename2:...
출력되는 클래스명의 선두의 패키지명 (패키지 수식자)을 생략 합니다. -noqualifier 의 인수로서 all(을)를 지정했을 경우, 모든 패키지 수식자가 모두 생략 됩니다. 삭제하는 복수의 패키지명을 구두점으로 단락지어, 와일드 카드와 함께 지정하는 일도 할 수 있습니다. 클래스 또는 인터페이스명이 표시되는 위치로부터 패키지명이 삭제됩니다.

다음의 예에서는, 모든 패키지 수식자를 생략 합니다.

    -noqualifier all
다음의 예에서는, 패키지 수식자 java.lang 및 java.io 를 생략 합니다.

    -noqualifier java.lang:java.io
다음의 예에서는, java 로 시작되는 패키지 수식자와 com.sun 라고 하는 서브 패키지 (javax 는 아니다)를 생략 합니다.

    -noqualifier java. *:com.sun. *
위의 동작에 의해 패키지 수식자가 표시됩니다만, 이름은 적당 짧아집니다. 「이름이 표시되는 방법」을 참조해 주세요. 이 규칙은,-noqualifier 를 사용했는지 어떠했는지에 관계없이 유효합니다.

-notimestamp 
타임 스탬프를 억제합니다. 타임 스탬프는, 생성되는 HTML 의 각 페이지의 최상부 근처에 있는 HTML 코멘트안에 숨겨집니다. 이 옵션을 사용하면, 타임 스탬프에 의한 diff 가 발생하지 않게 되기 (위해)때문에, 2 개의 소스 베이스로 Javadoc 를 실행해, 이러한 소스 베이스를 구별하고 싶을 때에 도움이 됩니다 (이 옵션을 사용하지 않는 경우는, 페이지 마다 diff 하지만 발생한다). 타임 스탬프에는 Javadoc 버젼 번호가 포함되어 이 시점에서는, 다음과 같이 표시됩니다.
     <! -- Generated by javadoc (build 1.5. 0-internal) on Tue Jun 22 09:57:24 PDT 2004 -->

-nocomment 
주설명 모든 태그를 포함한 코멘트 본체를 억제해, 선언만을 생성 섬 . 이 옵션을 사용하면(자), 다른 목적으로 작성된 원시 파일을 재이용해, 새로운 프로젝트의 초기 단계에서 스켈리턴 HTML 문서를 생성할 수 있습니다.


커멘드행 인수 파일

javadoc 의 커멘드행을 짧게 하거나 간결하게 하거나 하기 위해서,javadoc 커멘드에 대한 인수 (-J 옵션을 제외하다)가 들어간 1 개이상의 파일을 지정할 수가 있습니다. 이것을 이용하면, 어느 operating system상에서도, 임의의 길이의 javadoc 커멘드를 작성할 수 있습니다.

인수 파일에는, Javadoc 옵션, 원시 파일명, 및 패키지명을 자유롭게 조합해 기술할 수 있습니다. 또, Javadoc 옵션에 대한 인수만을 기술해도 괜찮습니다. 파일내의 각 인수는, 스페이스 또는 개행으로 단락짓습니다. 인수 파일내의 파일명은, 현재의 디렉토리로부터 본 상대 패스가 됩니다. 인수 파일의 위치로부터 본 상대 패스가 아닙니다. 인수 파일내의 파일명 리스트에서는, 와일드 카드 (*)(은)는 사용할 수 없습니다. 예를 들어,*. java 와는 지정할 수 없습니다. 인수 파일내의 인수로 @ 문자를 사용해, 복수의 파일을 재귀적으로 해석하는 것은 서포트되고 있지 않습니다. 또,-J 옵션도 서포트되고 있지 않습니다. 이 옵션은 기동 툴에게 건네집니다만, 기동 툴에서는 인수 파일을 서포트하고 있지 않기 때문입니다.

javadoc 를 실행할 경우에, 각 인수 파일의 패스와 파일명의 선두에 @ 문자를 붙여 건네줍니다. javadoc 는,@ 문자로 시작되는 인수를 찾아내면(자), 그 파일의 내용을 전개해 인수 리스트에 삽입합니다.

인수 파일을 1 개 지정하는 예

argfile 라는 이름의 인수 파일에 모든 Javadoc 인수를 포함해, 다음과 같이 사용할 수가 있습니다.
  % javadoc @argfile
  
이 인수 파일에는, 다음의 예로 나타나고 있는 2 개의 파일의 내용을 양쪽 모두 들어갈 수 있을 수가 있습니다.

인수 파일을 2 개 지정하는 예

Javadoc 옵션용으로 1 개(살), 원시 파일명용으로 1 개(살)과 같이, 2 개의 인수 파일을 작성해, 다음과 같이 해 사용할 수가 있습니다. 덧붙여 이후에의 리스트에서는, 행의 계속 문자를 사용하고 있습니다.

이하의 내용을 포함한 options 라는 이름의 파일을 작성합니다.

     -d docs-filelist 
-use
-splitindex
-windowtitle 'Java 2 Platform v1. 3 API Specification'
-doctitle 'Java<sup><font size="-2">TM</font></sup> 2 Platform v1. 4 API Specification'
-header '<b>Java 2 Platform </b><br><font size="-1">v1. 4</font>'
-bottom 'Copyright 1993-2000 Sun Microsystems, Inc. All Rights Reserved. '
-group "Core Packages" "java. *"
-overview /java/pubs/ws/1. 3/src/share/classes/overview-core.html
-sourcepath /java/pubs/ws/1. 3/src/share/classes

이하의 내용을 포함한 packages 라는 이름의 파일을 작성합니다.

     com.mypackage1
com.mypackage2
com.mypackage3
그 후, 다음의 커멘드를 사용해 javadoc 를 실행합니다.
  % javadoc @options @packages
  

패스 첨부의 인수 파일의 예

인수 파일에는, 패스를 지정할 수 있습니다. 다만, 그 파일내로 지정된 파일명은, 현재의 작업 디렉토리로부터 본 상대 패스가 됩니다. 즉, 아래의 예의 경우는,path1 나 path2 로부터 본 상대 패스가 아닙니다.
  % javadoc @path1/options @path2/packages
  

옵션의 인수의 예

다음에, Javadoc 옵션에 대한 인수만을 인수 파일에 포함하는 예를 나타냅니다. 여기에서는,-bottom (을)를 예에 채택합니다. 그 옵션에는, 꽤 긴 인수를 지정하는 것이 있기 때문입니다. 우선, 이 옵션의 텍스트 인수가 되는 다음과 같은 내용을 함 ,bottom 라는 이름의 파일을 작성합니다.

'<font size="-1"><a href="http://java.sun.com/cgi-bin/bugreport.cgi">Submit a 
bug or feature</a><br><br>Java is a trademark or registered trademark of
Sun Microsystems, Inc. in the US and other countries. <br>Copyright 1993-2000 Sun
Microsystems, Inc. 901 San Antonio Road, <br>Palo Alto, California, 94303, U.S.A.
All Rights Reserved. </font>'
그 후, 다음과 같이 해 Javadoc 툴을 실행합니다.
  % javadoc -bottom @bottom @packages
  
또, 인수 파일의 선두에 -bottom 옵션을 짜넣어 두면, 다음과 같이 해 실행할 수 있습니다.
  % javadoc @bottom @packages
  

실행



Javadoc 의 실행

버젼 번호 - javadoc 의 버젼 번호를 판별하려면 ,javadoc -J-version (을)를 사용합니다. 출력 스트림에는 표준 도크 렛의 버젼 번호가 포함됩니다. -quiet 로 무효로 할 수 있습니다.

공개 프로그램 인터페이스 - Java 언어로 기술된 프로그램으로부터 Javadoc 툴을 기동할 때 사용합니다. 이 인터페이스는 com.sun.tools.javadoc.Main 에 있습니다 (javadoc 는 재입가능). 자세한 것은,「안표 준족크렉 트」를 참조해 주세요.

도크 렛의 실행 - 아래와 같은 설명은, 표준 HTML 도크 렛을 호출하기 위한 것입니다. 커스텀 도크 렛을 호출하려면 ,-doclet 및 -docletpath 옵션을 사용합니다. 특정의 도크 렛을 실행한 완전한 예에 대해서는,「Running the MIF Doclet」를 참조해 주세요.


간단한 예

javadoc (은)는, 패키지 전체에 대해서 실행하는 일도, 개개의 원시 파일에 대해서 실행할 수도 있습니다. 각 패키지명은, 각각의 패키지명에 대응한다 디렉토리명을 가집니다. 다음의 예에서는, 원시 파일은 /home/src/java/awt/*.java 에 있습니다. 생성처 디렉토리는 /home/html 입니다.

1 개(살) 이상의 패키지의 문서화

패키지를 문서화하려면 , 그 패키지의 원시 파일 (*. java) 하지만, 패키지와 같은 이름을 가지는 디렉토리내에 존재하고 있지 않으면 안됩니다. 패키지명이 복수의 식별자로 구성되어 있다 (java.awt.color (와)과 같이, 각 식별자는 닷으로 단락지어지고 있다) 경우는, 후속의 각 식별자가 하위의 서브 디렉토리에 대응하고 있지 않으면 안됩니다 (java/awt/color 등). 1 개의 패키지를 위한 복수의 원시 파일을, 다른 장소에 있는 2 개의 디렉토리 트리로 나누어 포함하는 일도 가능합니다 (src1/java/awt/color (와)과src2/java/awt/color 등). 다만, 그 경우는,-sourcepath 에 의해, 그 양쪽 모두의 장소를 지정하지 않으면 안됩니다.

javadoc 를 실행하려면 ,cd 커멘드를 사용해 디렉토리를 변경하는지, 또는 -sourcepath옵션을 사용합니다. 이하의 예에서는, 양쪽 모두의 방법에 대해 설명합니다.

  • 케이스 1 - 1 개(살) 또는 복수의 패키지로부터의 재귀적인 실행 - 이 예에서는, Javadoc (을)를 어느 디렉토리로부터에서도 실행할 수 있도록(듯이) -sourcepath 를 사용해, 재귀 할 수 있도록(듯이) -subpackages (새로운 1.4 옵션)을 사용합니다. java.net 및 java.lang 이하의 패키지를 제외한 java 디렉토리의 서브 패키지를 순회합니다. 다만,java.lang 의 서브 패키지인java.lang.ref 는 제외됩니다.
      % javadoc -d  /home/html -sourcepath  /home/src -subpackages  java -exclude  java.net:java.lang
          

    그 외의 패키지 트리를 순회하려면 ,java:javax:org.xml.sax 와 같이,-subpackages 인수에 그 이름을 추가합니다.

  • 케이스 2 - 루트 소스 디렉토리로 옮기고 나서 명시적인 패키지에 대해서 실행 - 완전 지정의 패키지명의 친디렉토리로 옮깁니다. 다음에, 문서화하는 1 개(살) 이상의 패키지명을 지정해 javadoc 를 실행합니다.
      % cd /home/src/
      % javadoc -d /home/html java.awt java.awt.event
          
  • 케이스 3 - 단일의 디렉토리 트리의 명시적인 패키지에 대해서 임의의 디렉토리로부터 실행 - 이 케이스에서는, 커런트 디렉토리가 어디서 있어도 괜찮습니다. 최상정도 패키지의 친디렉토리를 -sourcepath (으)로 지정해, 문서화하는 1 개(살) 이상의 패키지명을 지정해 javadoc 를 실행합니다.
    % javadoc -d /home/html -sourcepath /home/src java.awt java.awt.event
          
  • 케이스 4 - 복수의 디렉토리 트리의 명시적인 패키지에 대해서 임의의 디렉토리로부터 실행 - 케이스 3 (와)과 같습니다만, 패키지는 다른 디렉토리 트리에 납입할 수 있고 있습니다. 각각의 트리의 루트에의 패스를 -sourcepath(으)로 지정해 (구두점으로 단락짓는다), 문서화하는 1 개(살) 이상의 패키지명을 지정해 javadoc 를 실행합니다. 1 개의 패키지의 모든 원시 파일이, 1 개의 루트 디렉토리아래에 존재해야 하는, 이라고 할 것은 없습니다. 소스 패스로 해서 지정된 장소의 어디선가 발견되면 충분합니다.
      % javadoc -d /home/html -sourcepath /home/src1:/home/src2 java.awt java.awt.event
    
결과: 상기의 어느 케이스에서도,java.awt 와 java.awt.event 패키지내의 public 및 protected 클래스와 인터페이스에 대해, HTML 형식의 문서가 생성되어 지정된 생성처 디렉토리 (/home/html)에 HTML 파일이 보존됩니다. 2 개이상의 패키지가 생성되고 있으므로, 문서는, 패키지의 리스트, 클래스의 리스트, 및 메인의 클래스 페이지라고 하는 3 개의 프레임을 가지게 됩니다.

1 개(살) 이상의 클래스의 문서화

또, 1 개(살) 이상의 원시 파일 (. java)를 건네주어, Javadoc 툴을 실행할 수도 있습니다. javadoc 는, 다음의 2 개의 어느 쪽인가의 방법으로 실행할 수 있습니다. 1 개(살)은,cd 커멘드로 디렉토리를 변경하는 방법, 이제(벌써) 1 개(살)은 . java 파일에의 패스를 완전 지정하는 방법입니다. 상대 패스는, 현재의 디렉토리를 기점으로 합니다. 원시 파일명을 건네줄 때는,-sourcepath 옵션은 무시됩니다. asterisk (*)와 같은 커멘드행 와일드 카드를 사용하면(자), 클래스의 그룹을 지정할 수 있습니다.

  • 케이스 1 - 소스 디렉토리로 옮긴다 - . java 파일이 있는 디렉토리로 옮깁니다. 다음에, 문서화하는 1 개(살) 이상의 원시 파일의 이름을 지정해 javadoc 를 실행합니다.
      % cd /home/src/java/awt
      % javadoc -d /home/html Button.java Canvas.java Graphics*.java
          
    이 예에서는, 클래스 Button 와 Canvas, 및 이름이 Graphics 그리고 시작되는 클래스에 도착해, HTML 형식의 문서가 생성됩니다. 패키지명은 아니고 원시 파일이 javadoc 에 인수로서 건네받고 있으므로, 문서는, 클래스의 리스트와 메인 페이지라고 하는 2 개의 프레임을 가지게 됩니다.

  • 케이스 2 - 패키지의 루트 디렉토리로 옮긴다 - 이것은, 같은 루트내에 있는 복수의 서브 패키지의 개개의 원시 파일을 문서화하는 경우에 편리합니다. 패키지의 루트 디렉토리로 옮겨, 각 원시 파일을, 루트로부터의 패스와 함께 지정합니다.
      % cd /home/src/
      % javadoc -d /home/html java/awt/Button.java java/applet/Applet.java
          
    이 예에서는,Button 클래스 및 Applet 클래스에 도착해, HTML 형식의 문서가 생성됩니다.

  • 케이스 3 - 임의의 디렉토리로부터 - 이 케이스에서는, 현재의 디렉토리가 어디서 있어도 괜찮습니다. 문서화한다 . java 파일에의 절대 패스 (또는, 현재의 디렉토리로부터의 상대 패스)를 지정해 javadoc 를 실행합니다.
      % javadoc -d /home/html /home/src/java/awt/Button.java /home/src/java/awt/Graphics*.java
          
    이 예에서는, 클래스 Button 와 이름이 Graphics 그리고 시작되는 클래스에 도착해, HTML 형식의 문서가 생성됩니다.

패키지와 클래스의 문서화

패키지 전체와 개개의 클래스를 동시에 지정해 문서화할 수도 있습니다. 다음에 전술의 2 개의 예를 조합한 예를 나타냅니다. sourcepath (은)는, 패키지에의 패스에 대해서는 사용할 수 있습니다만, 개개의 클래스의 패스에 대해서는 사용할 수 없습니다.
  % javadoc -d /home/html -sourcepath /home/src java.awt /home/src/java/applet/Applet.java
  
이 예에서는, 패키지 java.awt 와 클래스 Applet 에 대해, HTML 형식의 문서가 생성됩니다. Javadoc 툴은,Applet 의 패키지명을,Applet.java 원시 파일내의 패키지 선언 (그 선언이 있는 경우)으로부터 판별합니다.

[출처] JavaDoc 작성법|작성자 으라차차



[출처]
 JavaDoc 작성법|작성자 으라차차


:
Posted by 라면스프
2011. 9. 23. 10:15

GC (Garbage Collection) 과 로그수집 Enjoy/JAVA2011. 9. 23. 10:15

출처 :  http://itnpeople.blog.me/40133095260

GC (Garbage Collection) 과 로그수집



GC (Garbage Collection)

GC 는 minor GC, full GC 로 나뉘어 진다.

Full GC 시는 모든 프로세스를 holding 된다 Full GC 동안은 response 하지 않으므로 Full GC 시간을 줄이는 것이 성능 향상에 매우 중요함

 

GC 알기 위해서는 첨부된 문서를 반드시 먼저 숙지

첨부해도 되는 문서인지는 모르겠으나 구글링 가장 정리되어 있는 문서이기에 첨부합니다.

작성하신 조병욱님 정말 감사합니다.

 

반드시 알아야

  1. JVM 메모리는 크게 New/Young - Old 영역으로 GC Minor GC Full GC 나누어 지며
  1. Minor GC New/Young 영역의 메모리를 확보하는 작업
  1. Full GC Old 영역의 메모리를 확보하는 작업. Full GC 처리 시간을 줄이는 것이 메모리 튜닝의 핵심
  1. GC 알로리즘은 4개이며 각각의 환경 ( H/W 지원 ) 맞게 JVM 옵션을 통해서 알고리즘을 선택 가능
  1. 전체 메모리에서 New/Young 영역의 비율을 늘리면 minor GC , Full GC 횟수를 줄일 있지만 Full GC 소요시간은 동일

 

GC 로그 수집

GC 튜닝하기 위해서는 가장 중요한 것은 역시 로그 수집

Jvm 옵션을 통하여 GC 로그를 수집

옵션에서 특별히 파일을 지정하지 않을 경우는 콘솔에 로깅됨 ( 톰켓 : $CATALINA_HOME/logs/catalina.out)

 

-verbosegc : GC 로깅 처리하겠다.

-verbosegc : GC 로깅 처리

-XX:+PrintGCDetails : Detail 하게 로깅

-XX:+PrintGCTimeStamps : 시간도 로깅에 포함

-XX:+PrintHeapAtGC : GC 발생 전후의 Heap에 대한 정보를 상세하게 기록

 

JVM 옵션 지정 (톰켓)

 

# vi /usr/local/tomcat/bin/catalina.sh

JAVA_OPTS="$JAVA_OPTS -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"

 

APP 경우는 반드시 JVM 옵션에 "-server" 추가 (default : -client) 한다.

 

-server 옵션을 추가 했을 경우 New/Young : Old = 1:2  크기로 자동 셋팅

Default 1:8  이므로 -server 옵션을 추가 주는 것만으로 New/Young 영역이 늘어나 GC 횟수를 줄일 있다.

 

JAVA_OPTS="$JAVA_OPTS -server"

 

JVM에서 Full GC 최소 1시간 마다 1회씩 주기적으로 수행 (JDK_1.6 이상)

 

참고 URL

GC 관련 게시물 : http://www.javaservice.net/~java/bbs/read.cgi?m=etc&b=jdk&c=r_p&n=1152321260

JVM Option : http://wiki.ex-em.com/index.php/JVM_Options


:
Posted by 라면스프
2011. 6. 3. 16:13

Java 스톱워치 Stopwatch 구현 Enjoy/JAVA2011. 6. 3. 16:13

출처 : http://mwultong.blogspot.com/2007/08/java-timer-stopwatch.html

변수선언 :

    static String timerBuffer; //경과 시간 문자열이 저장될 버퍼 정의
    static int oldTime;        //타이머가 ON 되었을 때의 시각을 기억하고 있는 변수

본문내용 :

    oldTime = (int) System.currentTimeMillis() / 1000; // 타이머 시작
    secToHHMMSS(  ((int) System.currentTimeMillis() / 1000) - oldTime  );// 타이머 스탑
    System.out.format("Timer OFF 1! 경과 시간: [%s]%n", timerBuffer); // 경과 시간 화면에 출력

시분초로 변환 함수 선언 :

    public static void secToHHMMSS(int secs) {
        int hour, min, sec;

        sec  = secs % 60;
        min  = secs / 60 % 60;
        hour = secs / 3600;

        timerBuffer = String.format("%02d:%02d:%02d", hour, min, sec);
    }


:
Posted by 라면스프
2011. 1. 5. 11:14

javac, java 명령어의 옵션 Enjoy/JAVA2011. 1. 5. 11:14

출처 : http://silmelove.blog.me/30015264341


자바 컴파일과 실행 에 사용되어지는

 javac, java 명령어의 옵션을

다음과 같이 정리하였습니다.


javac - 자바컴파일러로써, 자바코드를 작성한 소스파일(.java)을 자바 가상머신이 인식할수 있는 바이트 코드(.class)
타입으로 변환시켜주는 명령어 입니다.

사용법: javac <options> <souce files>
예를들어, Hello.java, Greeting.java 두개의 파일이 존재한다면,
javac Hello.java Greeting.java
javac *.java (*을 사용해서, 모든 확장자가 .java인 파일을 컴파일할수 있다.)

 

1) 옵션:


a) -classpath:

 -classpath(cp) path(파일 절대 경로):
 컴파일러가 컴파일 하기 위해서 필요로 하는 참조할 클래스 파일들을 찾기 위해서 컴파일시 파일 경로를 지정해주는
옵션. 예를 들어,  Hello.java파일이 C:\Java 디렉터리에 존재하고, 필요한 클래스 파일들이 C:\Java\Engclasses에 위치한다면,
javac -classpath C:\Java\Engclasses C:\Java\Hello.java 로 해주면 된다. 만약 참조할 클래스 파일들이 C:\Java\Engclasses외의 
다른 디렉터리에도 존재한다면, C:\Java\Korclasses 일경우, 
javac -classpath C:\Java\Engclasses;C;\Java\Korclasses C:\Java\Hello.java
그리고, 현재 디렉터리역시 포함하고 싶다면,
javac -classpath .;C:\Java\Engclasses;C;\Java\Korclasses C:\Java\Hello.java
기본적으로, dos에서는 .는 현재 디렉터리를 의미하고, ..는 현재 디렉터리의 상위디렉터리를 의미한다. 
또한 classpath 대신 단축어인 cp를 사용해도 된다.
javac -cp C:\Java\Engclasses C:\Java\Hello.java 

 

b) -d: 
 -d directory
 클래스 파일을 생성할 루트 디렉터리를 지정합니다.
기본적으로 컴파일러는 -d옵션을 주지 않으면, 소스파일이 위치한 디렉터리에 클래스 파일을 생성시킵니다.
예를 들어,  Hello.java파일이 C:\Java 디렉터리에 존재하고 클래스 파일의 루트디렉터리를 C:\Java\Classfiles라고 하면, 
javac -d C:\Java\Classfiles C:\Java\Hello.java 입니다.

만약 -d 옵션을 사용하려고 하는데, 루트디렉터리(위예에서는 C:\Java\Classfiles) 가 존재 하지 않는다면, 
"The system cannot find the path specified"라는 에러 메시지를 보게 됩니다. 
현재 작업 디렉터리가 C:\Java\Classfiles 에 위치하면, 
javac -d .\Classfiles Hello.java 와 같이 상대 디렉터리로 표현할수 있습니다.

java class내에서 package를 선언한 경우 package별 폴더를 생성하고 해당 폴더에(package) compile한다.

 

c) -encoding:
-encoding encoding name
소스 파일에 사용된 문자열 인코딩을 설정합니다.
만약 위옵션이 설정되어 있지 않으면, 플래폼의 기본적인 컨버터가 사용되어 집니다.

 

d) -g:
모든 디버깅 정보를 생성시킵니다.
만약 위옵션이 설정되어 있지 않으면, 기본적으로, 라인넘버만 생성시킵니다.
-g:none: 디버깅 정보를 전혀 생성 시키지 않습니다.
-g:{lines, vars, source}:
위처럼 명시적으로, 몇몇 디버깅 정보를 생성시킬수 있습니다.
lines은 라인정보, vars는 지역변수, sounce는 소스 파일 정보를 나타냅니다.

 

e) -nowarn:

경고 메시지 (warning message)를 생성시키지 않습니다.

 

f) -verbose:

컴파일러와 링커가 현재 어느 소스파일이 컴파일되고 있고, 어느 파일이 링크되고 있는지 
그정보를 출력한다.

 

h) -deprecation:

소스 코드내에서, 사용되어진 deprecated API의 위치 를 출력 합니다.

ex)
C:\Java> javac World.java
Note: World.java uses a deprecated API. Recompile with "-deprecation" for details
.
1 warning
C:\Java> javac -deprecation World.java
World.java:52: Note: The method java.awt.Dimension size() in class java.awt.Compon
ent has been deprecated.
Dimension d = size();

Note: World.java uses a deprecated API. Please consult the documentation for a be
tter alternative.

 

i) -sourcepath:

-sourcepath 소스패스

소스파일의 위치를 지정합니다.

 

j) -target:

-target 자바버젼

지정된 자바버젼의 VM에서 작동 되어지도록 클래스파일을 생성 시킵니다.

1.1
jvm 1.1 버젼에서 호환되어질수 있는 클래스 파일생성
1.2
jvm 1.2 버젼에서 호환되어질수 있는 클래스 파일생성
1.3
jvm 1.3 버젼에서 호환되어질수 있는 클래스 파일 생성

ex)

javac -target 1.2 Helloworld.java 

 

k) -bootclasspath 패스:

특정한 bootstrap또는 확장 클래스를 지정할수 있다.
기본적으로, 자바컴파일러는 javac(컴파일러명령)이 설치된 플래폼의 bootstrap과 확장클래스들을 통해서, 컴파일작업을 수행하지만,
bootclasspath 옵션을 사용하면, cross-compiling이라고 해서, 다른 자바플래폼의 bootstrap과 확장클래스들을 통해서, 컴파일 할수 있는 기능을 지원한다.
예를들어,
javac -target 1.1 -bootclasspath jdk1.1.7/lib/classes.zip -extdirs "" OldCode.java
컴파일러에게 현재 자신의 bootstrap을 사용하지 말고, jdk1.1.7/lib/classes.zip bootstrap클래스들을 사용해서 컴파일 하라고 
명령하는것이다.
참고로, 모바일자바에서, 모바일폰에 설정된, jvm에 맞도록, 소스코드를 컴파일하기 위해서, 주로 사용되어지는 옵션이다.

 

 

l) -extdirs 디렉터리:
특정한, 확장 디렉토리를 지정한다.cross-compiling시 주로, 사용되어지는 옵션이면, 각디렉터리들은 콜론(:)에 의해서, 분리되어진다.
컴파일시, 기술한 디렉터리의 클래스 파일을 참조한다.

 

========================================================

출처 : http://blog.naver.com/darkhan1?Redirect=Log&logNo=10009423507

 

java 컴파일시 알아 두면 유용하게 쓰일거 같다..

 

 

 

###################################################################

###################################################################

 

 

Usage: javac <options> <source files>
where possible options include:
  -g                                  Generate all debugging info
  -g:none                          Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                         Generate no warnings
  -verbose                        Output messages about what the compiler is doing
  -deprecation                   Output source locations where deprecated APIs are used
  -classpath <path>           Specify where to find user class files and annotation processors
  -cp <path>                     Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>                Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}            Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...]

                                       Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -d <directory>                 Specify where to place generated class files
  -s <directory>                 Specify where to place generated source files
  -implicit:{none,class}      Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>            Generate class files for specific VM version
  -version                         Version information
  -help                             Print a synopsis of standard options
  -Akey[=value]                Options to pass to annotation processors
  -X                                 Print a synopsis of nonstandard options
  -J<flag>                         Pass <flag> directly to the runtime system
  
  
  
  
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -client   to select the "client" VM
    -server   to select the "server" VM
    -hotspot   is a synonym for the "client" VM  [deprecated]
                  The default VM is client.
                  
    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A ; separated list of directories, JAR archives, and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                    see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
 

 

M) package 선언된 Java class 실행시키기

- package위치는 CLASSPATH 하위 폴더부터로 인식한다. 따라서 Package폴더의 Root가 ClassPath에 지정되든지

.(현위치)를 ClassPath에 등록 후 현 위치 아래서부터 package의 위치를 지정한다.

java package.class명 (현위치 아래에 package폴더가 존재)

java com.test.SampleMain

 

:
Posted by 라면스프