It's probably a bug in Harmony. During testing, I found an issue with DRLVM classloading, which I was able to isolate into a simple test [1]. I found this issue while running Eclipse 3.4.x and looking at the eclipse.log.
When I ran Eclipse against a RI - there were no exception messages. -Nathan [1] https://issues.apache.org/jira/browse/HARMONY-6020 On Sat, Nov 22, 2008 at 10:11 AM, Tony Wu <[EMAIL PROTECTED]> wrote: > On Fri, Nov 21, 2008 at 5:02 PM, Alexei Fedotov > <[EMAIL PROTECTED]> wrote: >> Hello, Tony, >> >> You wrote that getting a localized message usually happened on exit, >> thus did not affect performance. Let's consider Eclipse startup. You >> get a plenty of exception messages in log files about missing >> resources, and nevertherless Eclipse successfully starts. Well, you >> might think that Eclipse designers made a mistake relying on >> exceptions, but we want their Eclipse to start quickly anyway, don't >> we? > > yes we do. but I'm curious about that. why eclipse has this behavior? > I just tried to start eclipse 3.4.1 on my mac but no exception was > thrown for me. I can not find another machine to test it right now. > > And I believe in most cases, if the MissingResourceException was > thrown, there was a call to ResourceBundle.getBundle() and it failed > to find a resource. That is to say, Eclipse was asking for some > resources it didnt ship. > > Therefore I suspect is it possible that there exceptions are thrown > from non-default plug-ins? have you installed other plug-ins like > language packages? > > Can you send me the error log, I'd like to study it first. > >> >> Thanks! >> >> >> >> On Fri, Nov 21, 2008 at 11:50 AM, Tony Wu <[EMAIL PROTECTED]> wrote: >>> Keivn >>> >>> Sorry for different idea. >>> >>> First, I dont think exception handling is a right place to talking >>> about performance. It's a self-contradictory story. >>> If you think it is a good place to improve the performance, there must >>> be many exceptions thrown at runtime. But I dont think there should >>> be, because to use try/catch as condition judgment itself is a >>> performance killer. My understanding is that in the most cases when we >>> need to get a localized message, it's time for vm to exit. And why we >>> should take care the performance when exit? >>> >>> Furthermore, resource bundle is designed for decoupling the localized >>> messages from logic. It's not a good idea to couple them again with >>> hashtable. You can not ask translater to modify the java source code, >>> compile, build, and test it ;-) >>> >>> On Fri, Nov 21, 2008 at 1:34 PM, Jack Cai <[EMAIL PROTECTED]> wrote: >>>> I agree with Kevin that this might be a place that we could possibly >>>> improve. But we should be careful when using a cache, as it always >>>> introduces lots of complexity, like cache invalidation and reload. In the >>>> case of ResouceBundle, same thing here. What happens if the resource files >>>> gets updated? This will be a common scenario in long-running Java process, >>>> e.g., the JEE server environment. >>>> >>>> - Jack >>>> >>>> 2008/11/20 Jim Yu <[EMAIL PROTECTED]> >>>> >>>>> Hi Kevin, >>>>> Making a cache for all the message loaded from ResourceBundle will bring >>>>> huge overhead if only few message would be used in an application. Only in >>>>> some specific scenarios where lots of duplicate message is needed would >>>>> application benefit from such caching mechanism. But I don't think such >>>>> case >>>>> would be very common. Could you prove your idea by running some >>>>> benchmarks? >>>>> My another concern is that it doesn't make sense to use a hashtable to >>>>> store >>>>> the locale dependent message. How do you define the key for the entry? >>>>> E.g. >>>>> "K0046" would not be qualified since no locale info is included. And even >>>>> if >>>>> you find a good method to solve this, the overhead would be incredible if >>>>> lots of locales need to be supported for the message. >>>>> 2008/11/20 Kevin Zhou <[EMAIL PROTECTED]> >>>>> >>>>> > Jim Yu wrote: >>>>> > >>>>> >> In addition, using ResourceBundle in Harmony can make the message >>>>> >> output >>>>> >> be >>>>> >> easily localized into different languages. And it is very convenient to >>>>> >> support more locales in the future. >>>>> >> >>>>> >> 2008/11/20 Sean Qiu <[EMAIL PROTECTED]> >>>>> >> >>>>> >> >>>>> >> >>>>> >>> We can benefit from it when exceptions are thrown many times. >>>>> >>> But we rarely encounter this situation in our application :) >>>>> >>> To save the memory, space outweigh time in this case. >>>>> >>> >>>>> >>> Correct me if I'm wrong. >>>>> >>> >>>>> >>> 2008/11/20 Kevin Zhou <[EMAIL PROTECTED]> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>>> Hi, >>>>> >>>> I read some code in LUNI module of Harmony. >>>>> >>>> (org.apache.harmony.luni.util.Msg/MsgHelp and >>>>> java.util.ResourceBundle) >>>>> >>>> I found that Harmony uses ResourceBundle to load messages from >>>>> external >>>>> >>>> properties file. >>>>> >>>> e.g. Once it requires a message "K0046", it will always use >>>>> >>>> ResourceBundle to go through the >>>>> >>>> org.apache.harmony.luni.util.ExternalMessages.properties file to >>>>> search >>>>> >>>> >>>>> >>>> >>>>> >>> it. >>>>> >>> >>>>> >>> >>>>> >>>> I think such redundant and repeated I/O operations may degrade our >>>>> >>>> performance. >>>>> >>>> >>>>> >>>> Why not use a hashtable to store all the external messages? It only >>>>> >>>> requires several I/O operations initially! >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>> -- >>>>> >>> Best Regards >>>>> >>> Sean, Xiao Xia Qiu >>>>> >>> >>>>> >>> China Software Development Lab, IBM >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >> Hi Jim, >>>>> > I think that you misunderstand. >>>>> > I don't mean to discard using ResourceBundle for localization. >>>>> > I just suggest that we should use ResourceBundle to load all the >>>>> > external >>>>> > properties and store them in a hashtable initially. >>>>> > Then you don't need to repeat calling ResourceBundle to scan property >>>>> files >>>>> > any more, but turn to the hashtable. This may improve performance. >>>>> > >>>>> > Hi Sean and Regis, >>>>> > I think that external messages are not only designed for exceptions >>>>> > handling. >>>>> > Some may also use such a useful mechanism in their applications. >>>>> > >>>>> > Let's assume that one application execute on HARMONY. >>>>> > As a side effect, all jars on the bootpath will be loaded to search for >>>>> the >>>>> > ResourceBundle class the first time an external message is required. >>>>> > Obviously, application have to wait utill ResourceBundle class is loaded >>>>> > and it successfully finds the required message, which takes seconds. >>>>> > >>>>> > Note that if we can initially load all of the external properties before >>>>> > the first application class is loaded. >>>>> > This can provide a faster startup time and quick responses when it >>>>> requires >>>>> > any external messages. >>>>> > >>>>> > >>>>> >>>>> >>>>> -- >>>>> Best Regards, >>>>> Jim, Jun Jie Yu >>>>> >>>>> China Software Development Lab, IBM >>>>> >>>> >>> >>> >>> >>> -- >>> Tony Wu >>> China Software Development Lab, IBM >>> >> >> >> >> -- >> С уважением, >> Алексей Федотов, >> ЗАО «Телеком Экспресс» >> > > > > -- > Tony Wu > China Software Development Lab, IBM >
