Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between pages "Events" and "ICU4J"

(Difference between pages)
 
(Migration)
 
Line 1: Line 1:
This page lists the conferences with Eclipse-related talks, events, or whatever.
+
ICU4J is a set of Java libraries that provides more comprehensive support for Unicode, software globalization, and internationalization.  In order to provide this functionality to the Eclipse community, ICU4J was added to the Eclipse platform build for the 3.2 M4 milestone.  You will see it in the build as a plugin named com.ibm.icu.  The Eclipse platform will be utilizing the ICU APIs for Eclipse 3.2.
  
  
{| style="width:90%;" border="1" cellpadding="2" align="center"
+
==Migration==
! Conference !! Date !! Where !! CFP !! What
+
This section describes how to adopt ICU4J into your application.
|-
+
| [http://www.eclipsecon.org/2006/Home.do EclipseCon 2006] || March 20-23, 2006 || Santa Clara, California, USA || Closed ||
+
  
|-
+
Migration of application code can be done incrementally, meaning full adoption of all ICU4J function is not necessary to reap the benefits of using ICU4J. Migration can be done in the following four sequential steps:
| [http://www.linuxworldexpo.com/live/12/ Linux World 2006] || April 3-6 || Boston, Mass., USA || Closed ||
+
*[[Wayne Beaton | Wayne]] is presenting on Eclipse RCP
+
*Eclipse Foundation is participating in the expo
+
  
|-
+
1. <strong>Import changes </strong>
| [http://www.jax.de/ JAX 2006]/[http://eclipseforumeurope.com Eclipse Forum Europe 2006] || May 8-10, 2006 || Wiesbaden, Germany || Closed ||
+
*[[Wayne Beaton | Wayne]] is presenting on Eclipse RCP
+
*Mike, Ralph, and Wayne are attending the conference
+
  
|-
+
Some classes need only be replaced with the ICU equivalent class by changing the import statement (i.e. change java.* with com.ibm.icu.*).
| [http://java.sun.com/javaone/sf/index.jsp JavaOne 2006] || May 16-19, 2006 || San Francisco, California, USA || Closed ||
+
*[[Wayne Beaton | Wayne]] is presenting on [https://www28.cplan.com/javaone06_cv_124_1/session_details.jsp?isid=277422&ilocation_id=124-1&ilanguage=english Eclipse RCP]
+
*Mike and Bjorn are presenting on Callisto
+
*OSGi BoFs on [https://www28.cplan.com/javaone06_cv_124_1/session_details.jsp?isid=277663 Wed] and [https://www28.cplan.com/javaone06_cv_124_1/session_details.jsp?isid=277157 Thurs].  Various Equinox folks will be present
+
  
|-
+
Example: change references of java.text.Collator to com.ibm.icu.text.Collator
| [http://www.isr.uci.edu/icse-06/ ICSE 2006] || May 20-28, 2006 || Shanghai, China || Closed ||
+
  
|-
+
This should be done for the following classes:
| [http://www.jbossworld.com/index.htm JBoss World 2006] || June 12-15, 2006 || Las Vegas, baby || Closed ||
+
*java.text.BreakIterator
 +
*java.text.CollationKey
 +
*java.text.Collator
 +
*java.text.DateFormat
 +
*java.text.DateFormatSymbols
 +
*java.text.DecimalFormat
 +
*java.text.DecimalFormatSymbols
 +
*java.text.MessageFormat
 +
*java.text.NumberFormat
 +
*java.text.SimpleDateFormat
 +
*java.util.Calendar
 +
*java.util.TimeZone
  
|-
+
Note: java.util.StringTokenizer should be included in this list but the equivalent class in ICU4J (versions up to and including 3.4.4) can potentially cause a performance degradation versus the default Java implementation.  Therefore, the Eclipse SDK did not adopt ICU's version of StringTokenizer for Eclipse 3.2.
| [http://javasymposium-europe.techtarget.com/ The Server Side Java Symposium Europe 2006] || June 21-23, 2006 || Barcelona, Spain|| Closed ||
+
*[[Wayne Beaton | Wayne]] is presenting Eclipse RCP
+
  
|-
+
2. <strong>Parallel APIs</strong>
| [http://www.emn.fr/x-info/ecoop2006/ ECOOP 2006] || July 3-7, 2006 || Nantes, France || Closed ||
+
*Eclipse Foundation is hosting a reception and code camp
+
  
|-
+
In this case, you will want to use the corresponding classes and API’s in place of the ones that are included in the JDK (in the java.* packages).
| [http://conferences.oreillynet.com/os2006/ OSCON 2006]  || July 24-28, 2006 || Portland, Oregon, USA || Closed ||
+
*Bjorn is presenting
+
*[[Wayne Beaton | Wayne]] is presenting "Building Rich Clients using Eclipse RCP"
+
  
|-
+
Example: replace references of java.lang.Character with class com.ibm.icu.lang.UCharacter
| [http://conferences.oreillynet.com/cs/euos2006/create/e_sess/ OSCON Europe 2006]  || September 18-21, 2006 || Brussels, Belgium || Closed ||
+
*[[Wayne Beaton | Wayne]] has submitted a talk
+
  
|-
+
The conversion of java.* classes to com.ibm.icu.* classes should be done as follows:
| [http://www.sdexpo.com/ SD Best Practices 2006]  || September 11-14, 2006 || Boston, Mass., USA || [https://www.cmpevents.com/SDe6/a.asp?option=N&V=3&CPid=131 March 8th, 2006] ||
+
*java.util.Currency -> com.ibm.icu.util.Currency
 +
*java.util.GregorianCalendar -> com.ibm.icu.util.GregorianCalendar
 +
*java.util.SimpleTimeZone -> com.ibm.icu.util.SimpleTimeZone
 +
*java.lang.Character -> com.ibm.icu.lang.UCharacter
 +
*java.lang.Character$UnicodeBlock -> com.ibm.icu.lang.UCharacter$UnicodeBlock"
 +
*java.text.Format -> com.ibm.icu.text.UFormat
 +
*java.util.Locale -> com.ibm.icu.util.ULocale
 +
*java.util.ResourceBundle -> com.ibm.icu.util.UResourceBundle
  
|-
+
Note: classes UCharacter, UResourceBundle, and UFormat are not implemented in the replacement plug-in (see below) so if your application’s code needs to work with both the replacement plug-in and the real ICU4J plug-in then you will not be able to adopt these classes at this time.
| [http://www.jaoo.dk/ JAOO 2006]  || October 1-6, 2006 || Aarhus, Denmark || [http://www.jaoo.dk/speakers/ Soon] ||
+
  
|-
+
3. <strong>Re-structure</strong>
| [https://www-927.ibm.com/ibm/cas/cascon/index.shtml CASCON 2006]  || October 16-19, 2006 || Markham, Ontario, Canada || [https://www-927.ibm.com/ibm/cas/cascon/papers_call_new.shtml June 2, 2006] ||
+
  
|-
+
Some code needs to be re-written to take utilize ICU functionDiscovering code that needs to be re-structured in this manner will not be as systematic as in the previous two steps.
| [http://www.softwaresummit.com/index.html Colorado Software Summit 2006] || October 22-27, 2006 || Keystone Resort, Colorado, USA || [http://www.softwaresummit.com/2006/papers.htm April 2006] ||
+
  
|-
+
Example: use com.ibm.icu.text.BreakIterator to locate boundaries in text instead of iterating over a string and using java.lang.Character.isLetterOrDigit(string.charAt(idx)).
| [http://www.oopsla.org/2006/ OOPSLA 2006]  || October 22-26, 2006 || Portland, Oregon, USA || [http://www.oopsla.org/2006/submissionSystem.html March 18, 2006] ||
+
  
|-
+
4. <strong>Utilize New Features</strong>
| [http://www.ix-konferenz.de iX Konferenz: Eclipse 2006] || November 27-29, 2006 || Heidelberg, Germany || ? ||
+
*Ralph and [[Wayne Beaton | Wayne]] attending.
+
  
|-
+
ICU adds additional function in some areas that is not provided by the JDKIn this case, new code would need to be written to take advantage of these new features. 
| [http://www.w-jax.de/ W-JAX] || November 2006 || Munich, Germany || ? ||
+
  
|-
+
Example: the class com.ibm.icu.text.Transliterator
| [http://wiki.javapolis.com/confluence/dashboard.action JavaPolis (BeJug) 2006]  || December 2006 || Antwerp, Belgium || ? ||
+
*Ralph and [[Wayne Beaton | Wayne]] attending.
+
  
|}
+
==Replacement Plug-in==
 +
The Eclipse SDK will be adopting the ICU4J APIs for Eclipse 3.2.  The addition of the ICU4J plug-in adds on the order of 3MB worth of code.  Some applications may not want to absorb ICU4J if the priority is size over adopting the ICU4J function.  If this is the case for your application, you can download the replacement plug-in (<strong>com.ibm.icu.base</strong>) from the build page from which you obtained your Eclipse build, remove the <strong>com.ibm.icu</strong> plug-in and its source counterpart, and drop in the replacement plug-in.  This is required because the Platform adopted the ICU APIs for 3.2 and so just removing the ICU plug-in will result in compilation errors.  The replacement plug-in is about 100KB in size and simply calls through to the java.* packages (default JDK implementation) of the most commonly used classes and APIs in ICU4J.  The classes that are implemented in the replacement plug-in are as follows:
 +
 
 +
*BreakIterator
 +
*CollationKey
 +
*Collator
 +
*DateFormat
 +
*DateFormatSymbols
 +
*DecimalFormat
 +
*DecimalFormatSymbols
 +
*NumberFormat
 +
*SimpleDateFormat
 +
*StringTokenizer
 +
*Calendar
 +
*TimeZone
 +
*ULocale
 +
*MessageFormat
 +
 
 +
 
 +
If your application needs to be compatible between both the ICU4J plug-in and the replacement plug-in (most often for size reasons), we recommend you only use the API in the classes from this list.  If ICU4J is guaranteed to always be present in the application then you can safely use any of the ICU4J APIs.  The replacement plug-in will be built separately and available as a download on the build pages, but this is still work in progress.  You can however, start using the ICU4J APIs since the ICU4J plug-in is currently in the SDK build as of M4 (and beyond).
 +
 
 +
If you choose to adopt ICU4J, it is recommended that, in your plug-in manifest file, instead of using the <strong>Require-Bundle</strong> header to specify the dependency on ICU4J (e.g.)
 +
 
 +
<strong>Require-Bundle</strong>: com.ibm.icu
 +
 
 +
you use the <strong>Import-Package</strong> header to specify your plug-in's dependency on ICU4J (e.g.).
 +
 
 +
<strong>Import-Package</strong>: com.ibm.icu.text,
 +
com.ibm.icu.util
 +
 
 +
This is to ensure you will not encounter compile or runtime errors if you decide to use the replacement plug-in instead of the full ICU4J plug-in, or vice-versa.
 +
 
 +
==Bugs in ICU4J==
 +
Bugs that are found in ICU4J should not be logged against Eclipse products or components, they should be logged against the ICU project at:
 +
 
 +
http://bugs.icu-project.org/cgi-bin/icu-bugs
 +
 
 +
 
 +
==More Info==
 +
For more information about ICU4J visit the official home page:
 +
 
 +
http://www-306.ibm.com/software/globalization/icu/index.jsp
 +
 
 +
ICU open source project site:
 +
 
 +
http://icu.sourceforge.net/

Revision as of 11:52, 13 April 2006

ICU4J is a set of Java libraries that provides more comprehensive support for Unicode, software globalization, and internationalization. In order to provide this functionality to the Eclipse community, ICU4J was added to the Eclipse platform build for the 3.2 M4 milestone. You will see it in the build as a plugin named com.ibm.icu. The Eclipse platform will be utilizing the ICU APIs for Eclipse 3.2.


Migration

This section describes how to adopt ICU4J into your application.

Migration of application code can be done incrementally, meaning full adoption of all ICU4J function is not necessary to reap the benefits of using ICU4J. Migration can be done in the following four sequential steps:

1. Import changes

Some classes need only be replaced with the ICU equivalent class by changing the import statement (i.e. change java.* with com.ibm.icu.*).

Example: change references of java.text.Collator to com.ibm.icu.text.Collator

This should be done for the following classes:

  • java.text.BreakIterator
  • java.text.CollationKey
  • java.text.Collator
  • java.text.DateFormat
  • java.text.DateFormatSymbols
  • java.text.DecimalFormat
  • java.text.DecimalFormatSymbols
  • java.text.MessageFormat
  • java.text.NumberFormat
  • java.text.SimpleDateFormat
  • java.util.Calendar
  • java.util.TimeZone

Note: java.util.StringTokenizer should be included in this list but the equivalent class in ICU4J (versions up to and including 3.4.4) can potentially cause a performance degradation versus the default Java implementation. Therefore, the Eclipse SDK did not adopt ICU's version of StringTokenizer for Eclipse 3.2.

2. Parallel APIs

In this case, you will want to use the corresponding classes and API’s in place of the ones that are included in the JDK (in the java.* packages).

Example: replace references of java.lang.Character with class com.ibm.icu.lang.UCharacter

The conversion of java.* classes to com.ibm.icu.* classes should be done as follows:

  • java.util.Currency -> com.ibm.icu.util.Currency
  • java.util.GregorianCalendar -> com.ibm.icu.util.GregorianCalendar
  • java.util.SimpleTimeZone -> com.ibm.icu.util.SimpleTimeZone
  • java.lang.Character -> com.ibm.icu.lang.UCharacter
  • java.lang.Character$UnicodeBlock -> com.ibm.icu.lang.UCharacter$UnicodeBlock"
  • java.text.Format -> com.ibm.icu.text.UFormat
  • java.util.Locale -> com.ibm.icu.util.ULocale
  • java.util.ResourceBundle -> com.ibm.icu.util.UResourceBundle

Note: classes UCharacter, UResourceBundle, and UFormat are not implemented in the replacement plug-in (see below) so if your application’s code needs to work with both the replacement plug-in and the real ICU4J plug-in then you will not be able to adopt these classes at this time.

3. Re-structure

Some code needs to be re-written to take utilize ICU function. Discovering code that needs to be re-structured in this manner will not be as systematic as in the previous two steps.

Example: use com.ibm.icu.text.BreakIterator to locate boundaries in text instead of iterating over a string and using java.lang.Character.isLetterOrDigit(string.charAt(idx)).

4. Utilize New Features

ICU adds additional function in some areas that is not provided by the JDK. In this case, new code would need to be written to take advantage of these new features.

Example: the class com.ibm.icu.text.Transliterator

Replacement Plug-in

The Eclipse SDK will be adopting the ICU4J APIs for Eclipse 3.2. The addition of the ICU4J plug-in adds on the order of 3MB worth of code. Some applications may not want to absorb ICU4J if the priority is size over adopting the ICU4J function. If this is the case for your application, you can download the replacement plug-in (com.ibm.icu.base) from the build page from which you obtained your Eclipse build, remove the com.ibm.icu plug-in and its source counterpart, and drop in the replacement plug-in. This is required because the Platform adopted the ICU APIs for 3.2 and so just removing the ICU plug-in will result in compilation errors. The replacement plug-in is about 100KB in size and simply calls through to the java.* packages (default JDK implementation) of the most commonly used classes and APIs in ICU4J. The classes that are implemented in the replacement plug-in are as follows:

  • BreakIterator
  • CollationKey
  • Collator
  • DateFormat
  • DateFormatSymbols
  • DecimalFormat
  • DecimalFormatSymbols
  • NumberFormat
  • SimpleDateFormat
  • StringTokenizer
  • Calendar
  • TimeZone
  • ULocale
  • MessageFormat


If your application needs to be compatible between both the ICU4J plug-in and the replacement plug-in (most often for size reasons), we recommend you only use the API in the classes from this list. If ICU4J is guaranteed to always be present in the application then you can safely use any of the ICU4J APIs. The replacement plug-in will be built separately and available as a download on the build pages, but this is still work in progress. You can however, start using the ICU4J APIs since the ICU4J plug-in is currently in the SDK build as of M4 (and beyond).

If you choose to adopt ICU4J, it is recommended that, in your plug-in manifest file, instead of using the Require-Bundle header to specify the dependency on ICU4J (e.g.)

Require-Bundle: com.ibm.icu

you use the Import-Package header to specify your plug-in's dependency on ICU4J (e.g.).

Import-Package: com.ibm.icu.text, com.ibm.icu.util

This is to ensure you will not encounter compile or runtime errors if you decide to use the replacement plug-in instead of the full ICU4J plug-in, or vice-versa.

Bugs in ICU4J

Bugs that are found in ICU4J should not be logged against Eclipse products or components, they should be logged against the ICU project at:

http://bugs.icu-project.org/cgi-bin/icu-bugs


More Info

For more information about ICU4J visit the official home page:

http://www-306.ibm.com/software/globalization/icu/index.jsp

ICU open source project site:

http://icu.sourceforge.net/

Back to the top