• J2SE ( Standard Edition )
    일반 자바 프로그램 개발을 위한 용도로 이용되는 개발도구이며 각종 자료구조, 기본 유틸리티, 스윙이나 AWT와 같은 GUI도구등의 기본기능을 포함하고 있다.

 

  • J2EE ( Enterprise Edition)  -
    엔터프라이즈 환경을 위한 도구로 EJB, JSP, Servlet, JNDI같은 기능을 지원하며 웹 애플리케이션 서버를 이용하는 프로그램 개발시 많이 사용한다.
    J2EE는 웹기반의 엔터프라이즈 애플리케이션을 구축하기 위한 썬의 플랫폼이다. J2EE 서비스는 사용자의 브라우저와, 엔터프라이즈 데이터베이스 및 레거시 정보시스템 사이의 중간계층에서 수행된다. J2EE의 핵심요소는, JSP와 자바 서블릿, 그리고 기업내의 정보자원을 하나로 묶기 위한 다양한 인터페이스들의 뒤를 이은 EJB이다. J2EE 인터페이스는 데이터베이스를 위해 JDBC를, 디렉토리를 위해서는 JNDI를, 트랜잭션을 위해서는 JTA를, 메시징을 위해서는 JMS를, 전자우편시스템을 위해서는 JavaMail을, 그리고 CORBA와의 접속을 위해서는 JavaIDL을 각각 포함한다. 1999년 12월에, 최초의 공식적인 버전으로는 최초로 J2EE 버전 1.2가 발표되었으며, 다양한 레거시 애플리케이션과의 인터페이스를 위한 자바커넥터는 2000년 중에 발표될 것으로 예상된다.

출처 : http://www.ibm.com/developerworks/kr/library/os-ag-simple1/index.html

J2EE는 엔터프라이용 웹 기반 애플리케이션을 개발 및 전개할 수 있는 플랫폼 독립의 환경이다. 이 플랫폼은 메타 언어나 언어 상위 세트로 연결되었다. 하지만, J2EE는 근본적으로 자바 프로그래밍 언어이고, 특정한 자바 클래스의 최소 세트이다. (참고자료)

J2EE 는 멀티 티어, 웹 기반 애플리케이션들을 개발하는 애플리케이션 프로그램 인터페이스(API), 서비스, 프로토콜들로 구성된다. 이것은 복잡한 표준이고, 이를 단순화하는 것과 관련된 글을 쓴다는 것은 마치 미국 세법을 단순화 하는 것과 관련된 글을 쓰는 것과 같다. 쉬운 작업이 아니라는 뜻이다. 하지만, 제 1의 원리부터, 많은 구현 상세들까지 다루다 보면, 깨달음이 올 것이다. 이제 안전 벨트를 단단히 매고 출발해보자.

제 1의 원리

J2EE멀티-티어 디자인의 클라이언트 레이어는 순수 HTML 프로토콜(JavaServer Pages (JSP)와 Java 서블릿으로 생성됨)로 표현되고, TCP/IP 전송 프로토콜로 자바 애플릿을 전개한다. 모든 표준 순응 웹 브라우저는 J2EE 시스템의 클라이언트처럼 잘 작동되어야 한다.

서버 레이어에는 엔터프라이즈 애플리케이션의 플랫폼 로직이 정의되는 Enterprise JavaBeans (EJB) 기술이 포함되어 있다. EJB 서버는 쓰레딩, 동시성, 메모리 관리, 보안 기능을 제공하고, 이러한 일들을 자동으로 수행하여 애플리케이션 프로그래머의 짐을 덜어준다. 바로 이것이 J2EE의 힘이다.

엔 터프라이즈의 가장 귀중한 데이터들은 가장 낮은 레이어에 있는데, 여기에서 IBM® DB2®, Oracle, MySQL 같은 표준 데이터베이스 툴이나 Structured Query Language (SQL) 기반 데이터베이스 엔진이 Java Database Connectivity (JDBC) 인터페이스를 통해 액세스 된다.

J2EE는 웹 서비스에 상당히 집중하고 있다. 웹 서비스야 말로 두 개 이상의 애플리케이션들이 표준 기반 방식으로 서로 데이터를 통합 및 교환할 수 있는 놀라운 방식이다. J2EE는 값진 기술들의 집합소라 할 수 있다. J2EE 환경에서 커리어를 쌓기 위해 이 모든 기술들을 마스터 할 필요는 없지만, 이것을 배워두면 프로그래머들은 커리어를 높일 수 있다.

* J2EE 기술

다음은 많은 J2EE 기술들의 일부이다. 이 모든 기술들을 마스터 한 프로그래머들은 오늘날 직업 시장에서 상당히 수요가 높다. 내가 중요하다고 생각하는 순서대로 나열했으며, 어디까지나 내 주관적인 생각이다.

내가 이 리스트를 공개하는 이유는 J2EE의 복잡성도 설명하고, 이러한 기술들을 배울 때 어떤 순서로 배워야 할 지에 대해서 대강의 개요를 제공하기 위해서이다. 중요한 기술들은 다음과 같다:

  • JSP: 실행 전에 서블릿으로 컴파일 된 인라인 자바 코드를 가진 HTML 템플릿으로 된 파일.
  • EJB: 엔터프라이즈 웹 애플리케이션의 플랫폼 로직을 나타낸다. 두 가지 유형의 EJB 기술로는 엔터티 빈(entity beans)세션 빈(session beans)이 있다.
  • JDBC: 자바 환경에서 데이터베이스로 연결하는 API. Open Database Connectivity (ODBC) 대신 자바 프로그래머가 대안으로 사용할 수 있다.
  • Java API for XML Processing (JAXP): XML 문서를 파싱 및 변형할 때 애플리케이션을 보조함.
  • Java Naming and Directory Interface (JNDI): 애트리뷰트를 사용하는 객체를 검색하고, 애트리뷰트를 객체들과 제휴시키는 등의 디렉토리 연산을 수행하는 메소드를 정의함.
  • Java API for XML-based Remote Procedure Call (JAX-RPC): 개발자가 Web Service Description Language (WSDL)에서 나타낸 클라이언트와 서비스를 만들 수 있도록 함. WSDL은 서비스를 메시지에 대해 연산을 수행하는 엔드포인트로서 기술하고, XML로 정의된다.
  • Java API for XML-based Web Services (JAX-WS): 개발자들이 WSDL에 의해 기술되는 클라이언트와 서비스를 구현할 수 있다는 점에서 JAX-RPC와 비슷하다. 하지만, JAX-WS는 웹 서비스 엔드포인트를 선언할 때 @WebService 같은 주석을 사용하기 때문에 전개 디스크립터가 필요 없다. JAX-WS를 사용하면, 전개 디스크립터를 사용하지 않고 웹 서비스를 전개할 수 있다.
  • Java Architecture for XML Binding (JAXB): 바인딩 컴파일러와 런타임 프레임웍을 제공하여 자바 객체들을 XML 문서로 매핑한다. 시스템이 유효한 메시지들만 수락하여 처리하는지를 확인하는 것이 가능하다. 컴파일러는 World Wide Web Consortium (W3C) XML 스키마를 자바 클래스로 자동 변형하기 때문에, 여러분이 복잡한 파싱 코드를 작성할 필요가 없다.
  • Java API for XML Messaging (JAXM): 애플리케이션들이 인터넷을 통해 XML 비즈니스 문서를 교환할 수 있다. 재고 리스트, 송장, 기타 수많은 비즈니스 문서 등이 예이다.
  • Java API for XML Registries (JAXR): 웹 서비스를 구현, 전개, 발견하는데 유용한 다양한 종류의 XML 레지스터에 액세스하는 표준 API를 제공한다.
  • Java Message Service (JMS): 많은 메시징 시스템 제품들의 일반 기능들에 액세스 하는 일관된 API로 메시지 기반 애플리케이션을 작성할 수 있도록 해준다.
  • Java Management Extensions (JMX): J2EE 애플리케이션 서비스를 모니터링 및 관리하기 위해 만들어진 자바 표준.

J2EE의 장점

J2EE 는 엔터프라이즈 레벨 애플리케이션을 위해 만들어졌기 때문에 서버 인프라스트럭처는 많은 태스크들을 자동으로 핸들한다. 태스크 중에는 컨테이너-관리(Container-managed) 트랜잭션, 확장, 패일오버 관리, 보안 컨트롤 등이 있다.

컨테이너 관리 관계는 엔터티 빈들 사이에 일대일 및 일대다 관계를 지원한다. (엔터티 빈은 영속 저장 메커니즘에 비즈니스 객체들을 나타내는 자바 클래스이다. 예를 들어, 하나의 데이터베이스에 특정 행(row)) 일대다 관계의 경우, 엔터티 빈은 자바 컬렉션을 사용하여 다(many) 측면을 나타낸다. 이 같은 관계를 관리하는 기능은 관계형 데이터베이스 기술에서 관계 모델링의 개념과 비슷하다.

EJB 컨테이너는 모든 엔터티 빈 관계들의 참조 무결성을 관리하는데 있어 중요하다. 일대일 관계에서, 관계의 한 측을 변경하면 컨테이너는 자동으로 오래된 관계를 대체한다.

컨테이너 관리 트랜잭션의 중요성은 아무리 강조해도 지나치지 않는다. Apache Geronimo는 J2EE 표준에 순응하는데, J2EE 표준이 지정하는 컨테이너 클래스를 관리하는 커널을 제공한다.

 

  • J2ME - 소형 전자기기들을 위해 개발된 도구로 핸드폰이나 기타 임베디드 시스템에서 자바로 프로그램을 개발할때 이용하는 도구이다.

 

 

 

이 글은 스프링노트에서 작성되었습니다.


  • 윈도우 환경 : 경로 ; 사용
  • 유닉스 환경 : 경로 ; 사용

출처: http://aircook.tistory.com/entry/Java-classpath-옵션

 

테스트 프로그램을 구현하다가 웹이 아닌 그냥 자바 클래스를 실행해야 하는 경우가 생겼다.

그런데 -classpath옵션이 windowunix를 틀린것을 발견했다. 웹프로그래밍만 하다 보니 이제껏 이걸 모르고 있었다는게 한심하다.

다른점은 구분자(semi-colon과 그냥 colon)의 차이점이다.

예를 들면 다음과 같다.

window

java -cp .;..\lib\mail.jar;..\lib\activation.jar mail.MailSender


unix

java -cp .:../lib/mail.jar:../lib/activation.jar mail.MailSender


java help를 보니.. 다음과 같이 정확하게 구분자가 나와 있었다.

window

c:\>ver

Microsoft Windows XP [Version 5.1.2600]

c:\>java -h

Usage: java [-options] class [args...]

(to execute a class)

orjava [-options] -jar jarfile [args...]

(to execute a jar file)


where options include:

-clientto select the "client" VM

-serverto select the "server" VM

-hotspotis 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

-versionprint product version and exit

-version:<value>

require the specified version to run

-showversionprint product version and continue

-jre-restrict-search | -jre-no-restrict-search

include/exclude user private JREs in the version search

-? -helpprint this help message

-Xprint 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


unix

test|server:/user/test> uname -a

HP-UX server B.11.23 U ia64 3407499753 무제한-사용자 라이선스

test|server:/user/test> java -h

Usage: java [-options] class [args...]

(to execute a class)

orjava [-options] -jar jarfile [args...]

(to execute a jar file)


where options include:

-d32use a 32-bit data model if available

-d64use a 64-bit data model if available

-serverrun the HotSpot VM, tuned for long-lived,

server applications (default)

-hotspotsynonymous to the -server option

-clientrun the HotSpot VM, tuned for short-lived,

GUI applications

If present, the option to select the VM must be first.

The default VM is -server.


-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

-versionprint product version and exit

-version:<value>

require the specified version to run

-showversionprint product version and continue

-jre-restrict-search | -jre-no-restrict-search

include/exclude user private JREs in the version search

-? -helpprint this help message

-Xprint 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

이 글은 스프링노트에서 작성되었습니다.

'Java > Language' 카테고리의 다른 글

자주 발생하는 에러와 해결방법  (0) 2009.09.08
J2SE와 J2EE의 차이점  (3) 2009.09.06
JRE와 JDK의 차이, JRE  (0) 2009.09.06
Java를 익히기 위한 13가지 학습 항목들  (0) 2009.09.04
기술면접 관련 내용 정리  (2) 2009.09.02

JVM(Java Virtual Machine)
인텔의 기계어 코드를 실행하는 기계를 인텔 호환 컴퓨터라고 한다. 동일한 의미로 자바 기계어 코드 (클래스 파일: *.class)를 실행시켜주는 기계를 자바 머신이라고 한다. 인텔과 자바 머신의 차이는 인텔의 경우는 CPU 칩으로 만든 것에 비해, 자바의 경우에는 소프트웨어로 만들어져 있다. 이렇게 자바 기계어 코드를 실행시켜주는 소프트웨어를 자바 가상머신이라고 한다. 따라서 J2SDK의 java 명령어와 웹 브라우저는 자바 가상 머신을 가지고 있다고 할 수 있다. Java 명렁어는 자바 응용프로그램(애플리케이션)을 실행할 수 있고, 웹 브라우저는 자바 애플릿을 실행시킬 수 있기 때문이다. 

 


j2se5.gif

이 그림을 보는 것이 어느정도 이해하는 데 도움이 될 것으로 보인다(출처 :  JDK SE 5 API 문서).

  • JRE(Java RuntimeEnvironment) - 자바 런타임 환경 : 자바가 실행되는데 필요한 기본 환경을 뜻함.
    프로그래밍된 자바 클래스를 실행할 수 있는 기본 실행환경

 

  • JDK(Java Deveopment Kit) - 자바 개발 키트(Javac 포함)

    자바 프로그램은 자바 바이트 코드 인터프리터(Java Complier) javac 컴파일러를 통해서  class 파일로 변환된다. class 파일은 플랫폼과 무관한 코드이기 때문에 바이트 코드(ByteCode)라고도 한다. 바이트 코드는 각 플랫폼에 있는 자바 가상 머신의 자바 바이트 코드 인터프리터를 통해 실행된다. 자바 가상 머신의 바이트 코드 인터프리터는 실제적으로는 java 명령어나 웹 브라우저에 포함되어 있다.

    • javac ( 컴파일러 ) : 자바 컴파일러
    • java (인터프리터) : 자바 인터프리터는 디폴트로 JIT(Just In Time) 컴파일러를 사용한다. 클래스가 로드되면 JIT은 클래스의 바이트 코드를 기계어로 변환한다. JIT을 사용하는 경우에 일반적으로 클래스 로드하는 시간이 오래 걸리지만 전체적인 시스템 성능은 높아진다. 
    • appletviewer ( 애플릿 실행기 ) : 애플릿을 실행시켜주는 브라우저이다.
    • javah ( 헤더 파일 생성기 ) : C언어를 위한 헤더 파일을 생성한다.
    • jar ( Java 용 압축프로그램, 배포용 ) : 자바 압축 파일을 만들고 압축을 풀어준다.
    • javap ( 역어셈블러 ) : 클래스 파일을 역어셈블(기계어 형태로 번역)한다.

이 글은 스프링노트에서 작성되었습니다.

출처 : http://www.mimul.com/pebble/default/2009/08/31/1251715500000.html

중학생이든, 고등학생이든, 대학생이든, 직장인이든지 Java한 언어를 배워보고 싶은 분들에게 필요한 13가지 항목들을 주저리 두서없이 적어보았습니다.
참으로 많지요. 욕심내지 말고 하나씩 하나씩 독파해 간다는 마음으로 임했으면 합니다. 지레 겁먹지는 마시구요. 열정을 가지고 파다보면 어느덧 경지에 오르지 않을까요? 저도 열심히 열공하고 있습니다.

또한, 이런 것도 있었으면 좋겠다하는 것 댓글로 달아주시면 반영해 드리겠습니다.

1. 객체의 개념을 알아야 한다.
 - OOA/OOAD 개념이 들어간 책을 학습하면 됨
 - UML도 다루는 법을 배워 실제 설계도 해보면 객체의 개념을 이해하고 설계하는 데 도움이 됨

2. Java 언어의 기본을 알아야 한다.
 - Class/Object, Interface, Exception, Threads, I/O Package, System Programming, Internationalization/Localization
 - Collections, Reflection, Serialization, Networking(NIO 포함)
 - 기본을 알아야 응용력이 생김

3. Design Pattern을 공부하면 좋다.
 - GOF, Anti-Pattern 등은 효율적인 비지니스 로직을 설계 및 구현하기 위한 방법을 제공한다.
 - 성능 이슈가 발생하지 않는 효율적인 코딩 가이드라인을 숙지한다.

4. Java 언어의 구동 환경을 알아야 한다.
 - JVM, classloaders, Garbage Collection 등의 메커니즘을 알아야 함
 - 컴파일 옵션이며 실행 옵션들도 알아야 함

5. 분산 객체에 대하서도 알아야 한다.
 -  RMI and RMI / IIOP를 이해해야 함
 - JNDI (JavaNamingandDirectoryInterface), JMS (JavaMessageService), JTA / JTS (JavaTransactionAPI / JavaTransactionService), JMX (JavaManagementeXtensions)도 알면 도움이 됨
 - EJB도 알면 도움이 됨(상용 WAS 사용시)

6. Javascript를 알아야 고객을 즐겁게 할 수 있다.
 - Javascript언어가 가장 어렵다는 사람들도 있으니 기본적인 것을 배워야 됨
 - JavaScript library(Prototype, JQuery, Dojo Toolkit, MooTools, Yahoo! UI Library, Rico, Scriptaculous) 사용법도 알면 서비스에 도움이
 - Ajax의 기본적인 내용을 알아야 함(DWR 포함)

7. 웹 프로그램을 할려면 Servlets, JSP, JSTL(StandardTagLibraries), JavaScript, Third-party Framework를 알아야 한다.
 - HTTP1.1, Servlet 2.5, JSP2.0 스펙을 알면 Security 요소 대응이라던가 자원 모니터링(APM)도 가능함
 - MVC web application frameworks(JSF, Struts/Struts2, Tapestry, Cocoon, Velocity, WebWork, Spring MVC Framework)도 알아야 함
 
8. 비즈니스단의 lightweight application framework 정도는 이해해야 한다.
 - IoC/DI style(setter, constructor, interfaceinjection) - Spring, PicoContainer Avalon 를 학습함
 - Jakarta 프로젝트의 라이브러리들(commons-lang, commons-io, log4j, common-codec, http-client, commons-pool, commons-exec, commons-collections, commons-beanutils)은 사용할 수 있는게 좋음
 - JOB 스케줄링(Quartz), 검색(Lucene), 분산캐싱(JCache, Ehcache), 차트 이미징(Jfreechart) 프레임워크도 알면 좋음
 
9.  Java database 관련 기술들을 익혀라.
 - Oracle, MySQL, SQL server, Cubrid, Tibero를 기본적으로 다룰줄 알아야 함
 - ORM framework(Hibernate, iBatis, JDO, CocoBase, TopLink, InsideLiberator)를 하나 정도는 다룰 줄 알아야 함
 - 성능 형상에 도움을 줄수 있는 케턱션 풀 라이브러리(commons-dbcp, c3p0 - JDBC3 Connection and Statement Pooling)도 사용할 수 있어여 함

10. WAS중에 하나 정도는 구동할 수 있어야 한다.
 -  tomcat, resin, Jrun 중에 하나정도는 환경 설정/튜닝/구동할 수 있어야 함(Apache등 웹서버와 연동 포함)

11. Web Services를 구현할 수 있어야 한다.
 - JAX-RPC (JavaAPIforXML / RPC), SAAJ (SOAPwithAttachmentsAPIforJava), JAXB (JavaArchitectureforXMLBinding), JAXM (JavaAPIforXMLMessaging), JAXR (JavaAPIforXMLRegistries) or JWSDP (JavaWebServicesDeveloperPack)
 - Web Services Framework(AXIS, AXIS2, Apache CXF 등) 중에 하나정도는 사용할 수 있어야 함

12. Network Programming(서버 데몬)도 할 줄 알아야 한다.
 - NIO개념과 Socket의 개념 및 상태에 대해서 이해해야 함
 - Mina, James 등의 오픈 소스도 다룰 줄 알면 좋음

13. 단위 테스트 및 aspect-oriented programming, 테스팅 기법도 알아야 한다.
 - JUnit,  사용법도 알아여 함
 - Deploy 툴(Ant, Maven)도 알면 좋음
 - AspectJ, AspectWerkz 다룰수 있음 좋음

1. 두 함수(show(), show2()를 비교하라.

  1. public class ShowTest {
        public void show(String cmd){
            if ( cmd.equals("Test")){
                System.out.println("cmd is Test");
            }
        }
       
        public void show2(String cmd){
            if( "Test".equals(cmd)) {
                System.out.println("cmd is Test");
            }
        }
    }

  1. // 1번 문제는 equals(String cmd)에 null 값이 들어갔을 경우에 대한 질문... ㅡㅅ-)> 그런 경우는 생각을 안해봤어!!
    //그런 경험은 있지만... equals() 안에 들어가는 파라메터가 null 일 때 생기는 경우는 종종 있지.... ㅡㅅ-)>
    public class Main {
        public static void main(String[] args) {
            //String cmd = null;  //이 경우에는 show()에서 NullPointerException을 발생한다. 요게 질문의 핵심인듯.
            //String cmd = "Test"; //이 경우에는 show(), show2() 모두 정상적으로 실행
            String cmd = "test"; // 이건 당연히 둘다 반응 없음.
           
            ShowTest test = new ShowTest();
            test.show(cmd);
            test.show2(cmd);
        }
    }

 

2.고쳐야 할 부분은 어디!?

  1. public class ShowTest2 {
        public void show(String cmd){
            if ( cmd.equals("Test") && cmd != null ){ // 넘겨받은 cmd가 null일 경우에는 NullPointerException이 발생.
                System.out.println("cmd is Test");
            }
        }
    } //cmd.equals("Test") 이 부분을 "Test".equals(cmd) 수정해주면 정상적인 처리가 되겠지요.... ㅡㅅ-)> 잇힝!!!

  1. public class Main2 {
        public static void main(String[] args) {
            //String cmd = "Test";
            String cmd = null;
            ShowTest2 test = new ShowTest2();
            test.show(cmd);
        }
    }

 

3.이 경우에는 어떻게 나올까?

  1. public class ShowTest3 {
        public static void main(String[] args) {
            boolean a;
            boolean c;
            a = c = true;
           
            if ( ( a = true ) || ( c = false )){ // true or false ==> true 이니까....
                System.out.println("1:" + a + "   " + c); // 요 녀석이 출력된다. 조건문 안에서 대입하는건 안좋아요...ㅡㅅ-)!!
            }
           
            if ( ( a = true ) && ( c = false)){ //true && false ==> false 이니까.... 다시 물으니까... 당황해서 답을 제대로 못했다. ㅠㅅ-)
                System.out.println("2:" + a + "   " + c);
            }
        }
    }

4.String, StringBuffer, StringBuilder의 차이점(셋다 문자열 객체)

참고 : http://hongsgo.egloos.com/2033998 요 글을 보면, String < StringBuffer < StringBuilder 속도 차이가 있다. 흠... String은 적게 쓰는게 좋군요. ㅡㅅ-);;

참고 : http://cacky.tistory.com/36

  • String : 변경되지 않는 Character 문자열 객체
    문자열이 변경되지 않을 경우에는 String 사용
  • StringBuffer : 값이 변경 가능 // 동기화 가능 : 다중 스레드 일 경우에 사용
    문자열이 변경되고 다중 스레드에서 사용될 경우 사용
  • StringBuilder : 값이 변경 가능 // 동기화 되지 않음 : 단일 스레드일 경우에 사용
    문자열이 변경되고, 단일 스레드에서 사용될 경우 사용

 

5.가비지 컬렉션을 줄이기 위한 프로그래밍

Java에서는 기본적으로 가비지 컬렉션에 대해서는 JVM에서 처리를 해주기 때문에 크게 신경을 쓰지 않아도 된다고 배웠다. ㅡㅅ-)>

굳이 줄이는 방법을 떠올려보자면,

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts