Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [eclipse-incubator-e4-dev] e4 and Java5(was:Asynchronous Infrastructure)

Actually,

I think I see where the problem is.

If a cross-compiler compiles an enum into some non-1.5-runtime 
utility class, the result will run on an 1.4 runtime but won't be 
interoperable with other plugins compiled with 1.5 against an 
1.5 runtime which also use enum but the "1.5 enum"...

That's not an issue with Generics, which are a source-only
concept.

Moreover, annotations likely won't be able to live in 
1.4 compatible classfiles.

Long story short, if Equinox moved to 1.5 then it could
likely still be compiled into some JARs which can run on
an 1.4 only runtime, but those JARs would need to be
separate from the JARs used with 1.5. And enums would
need to be forbidden in the APIs.

Cheers,
--
Martin Oberhuber, Senior Member of Technical Staff, Wind River
Target Management Project Lead, DSDP PMC Member
http://www.eclipse.org/dsdp/tm
 
 

> -----Original Message-----
> From: eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx 
> [mailto:eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx] On 
> Behalf Of Oberhuber, Martin
> Sent: Tuesday, November 04, 2008 9:56 PM
> To: E4 developer list
> Subject: RE: [eclipse-incubator-e4-dev] e4 and 
> Java5(was:Asynchronous Infrastructure)
> 
> Well,
> 
> you can emulate Enums with a Class, can't you? In the end
> that's what the Java5 classlib does itself. The crosscompiler
> just needs to emit the required utility class(es). Whereby
> the hard thing is emitting the utility class(es) only once.
> 
> I believe that's what retroweaver is doing too...
> 
> Cheers,
> --
> Martin Oberhuber, Senior Member of Technical Staff, Wind River
> Target Management Project Lead, DSDP PMC Member
> http://www.eclipse.org/dsdp/tm
>  
>  
> 
> > -----Original Message-----
> > From: eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx 
> > [mailto:eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx] On 
> > Behalf Of Tom Schindl
> > Sent: Tuesday, November 04, 2008 9:18 PM
> > To: E4 developer list
> > Subject: Re: [eclipse-incubator-e4-dev] e4 and Java5 
> > (was:Asynchronous Infrastructure)
> > 
> > Hi,
> > 
> > There are constructs in Java 5 you can't compile to Java 
> 1.4 like e.g.
> > enums whereas e.g. generics can get compiled to Java1.4 
> > without problems
> > and javac itself has an unsupported feature to make this work [1].
> > 
> > Tom
> > 
> > [1]http://dev.eclipse.org/newslists/news.eclipse.tools.jdt/msg
> > 20212.html
> > 
> > 
> > Oberhuber, Martin schrieb:
> > > Hi all,
> > >  
> > > I agree that Generics are a very big advantage of Java5, and
> > > a decision in favor or against generics should likely be made
> > > early, before much new code / API is created for e4. It's likely
> > > that the decision needs to be considered separately for various
> > > layers (Equinox/Runtime vs. RCP vs. IDE, particularly).
> > >  
> > > Retroweaver [1] <http://retroweaver.sourceforge.net/> 
> > supports compiling
> > > Java5 sources into Java4
> > > compatible binaries today. I'm not sure how good it is, and
> > > I'd assume that some strategic member(s) would rather
> > > beef up Eclipse's own ecj rather than relying on a SF project
> > > it if we wanted to cross-compile.
> > >  
> > > That being said, is anybody from JDT core listening here?
> > > Is it technically feasible to compile 1.5 sources into 1.4
> > > bytecode with ecj?
> > >  
> > > I'm wondering how we can best move this important discussion
> > > forward without burning everybody's time in flame wars.
> > > I'd love to hear McQ's opinion on the matters.
> > >  
> > > [1] http://retroweaver.sourceforge.net/
> > >  
> > > Cheers,
> > > --
> > > *Martin Oberhuber*, Senior Member of Technical Staff, *Wind River*
> > > Target Management Project Lead, DSDP PMC Member
> > > http://www.eclipse.org/dsdp/tm
> > >  
> > >  
> > > 
> > >     
> > --------------------------------------------------------------
> > ----------
> > >     *From:* eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
> > >     [mailto:eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx] 
> > *On Behalf Of
> > >     *Ed Merks
> > >     *Sent:* Tuesday, November 04, 2008 8:07 PM
> > >     *To:* E4 developer list
> > >     *Subject:* Re: [eclipse-incubator-e4-dev] Asynchronous
> > >     Infrastructure (was:EFS, ECF and asynchronous)
> > > 
> > >     Guys,
> > > 
> > >     Comments below.
> > > 
> > > 
> > >     Schaefer, Doug wrote:
> > >>     There's a big difference between "under 
> consideration" and what
> > >>     will actually get done in e4. Even this discussion on
> > >>     asynchronousity, while interesting and important, 
> > isn't likely to
> > >>     lead to real code change, IMHO.
> > >     There's a discussion killer. :-P
> > >>      
> > >>     And to compare this Java 4 versus 5 war
> > >     War?
> > >>     to something we in the embedded space are also 
> > familiar with, how
> > >>     many APIs are C++ only and aren't based on a C layer. 
> > Java 5 will
> > >>     become ubuquitous when C++ does, which is pretty much never.
> > >     I can't comment on the C++ verses C thing , other than 
> > to mention
> > >     that Java killed the C++ IDE I was working on, but I 
> > see no reason
> > >     why a Java 5.0 version of the micro libraries for 
> > embedded devices
> > >     are an impossible thing.  Talking to the compiler guys, 
> > I'm lead to
> > >     believe it's relatively trivial to cross compile Java 
> 5.0 to 1.4
> > >     anyway; it's just not allowed by the language.  
> > Goodness knows what
> > >     Sun is thinking...
> > >>      
> > >>     Sorry, cranky today :(
> > >     I've got a pain in the neck myself...
> > >>      
> > >>     Doug.
> > >>
> > >>         
> > --------------------------------------------------------------
> > ----------
> > >>         *From:* eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
> > >>         [mailto:eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx] *On
> > >>         Behalf Of *Pawel Piech
> > >>         *Sent:* Tuesday, November 04, 2008 1:43 PM
> > >>         *To:* E4 developer list
> > >>         *Subject:* Re: [eclipse-incubator-e4-dev] Asynchronous
> > >>         Infrastructure (was:EFS, ECF and asynchronous)
> > >>
> > >>         I hate to say it, but perhaps it's time to admit 
> > that Eclipse
> > >>         community is too large and too divergent to be 
> served by a
> > >>         single platform.  
> > >     Blasphemer! :-P
> > >>
> > >>         IMO, this is already happening and the e4 effort 
> > is in fact a
> > >>         fork.
> > >     There are folks working very hard to ensure it's not a 
> > fork.  I.e.,
> > >     to ensure that your 3.x plugins will run on 4.0...
> > >>
> > >>           With the radical changes under consideration 
> > here, it's safe
> > >>         to say that 3.x is going to be around for a long 
> long time 
> > >     I'm not sure the radical changes are the cause, but it seems a
> > >     fairly safe bet nevertheless.
> > >>
> > >>         and e4 is going to be competing for its users and 
> > developers.
> > >     It will be hard to split the efforts...
> > >>
> > >>           Since e4's main selling point is innovation and lighter
> > >>         legacy load, the decision on using Java 5 seems 
> > obvious to me.
> > >     Yes, I made that point at the summit.  We can't make a 
> > legitimate
> > >     claim to achieving a progressive modern API while 
> rejecting the
> > >     modernization of the language itself.  Raw types just appear
> > >     offensive when you've spent a great deal of time 
> > eliminating every
> > >     vestige of them as was the case for EMF...
> > >>
> > >>
> > >>         But to bring this back to asynchronous programming.
> > >     Nothing like an interesting digression into the 
> > parallel between C++
> > >     and C compared to Java 5.0 and Java 1.4 to keep us 
> > entertained. :-)
> > >>
> > >>         The concurrency package can be and has been cloned 
> > for older
> > >>         jvms, but I think generics are just as important.
> > >     I can't help but bemoan how sad it is that there isn't a micro
> > >     version for 5.0!  That pain in my neck gets worse 
> just thinking
> > >     about it. I hope it stays at neck level...
> > >>
> > >>         Being able to parametrize the return types in a future,
> > >>         callable, and a callback interface makes a huge 
> > difference in
> > >>         making the code using them more readable and less 
> > error prone.
> > >     Some will argue it's just sugar, but the point is, that 
> > there are
> > >     those in the community of consider this sugar to make a huge
> > >     difference, so therefore it makes a huge difference.
> > >>
> > >>           Still, using Java 5 is not an all or nothing 
> > decision, so I
> > >>         don't think it's necessary to hold up development because
> > >>         there's no consensus on it.
> > >     For the e4 UI work we're just starting to use and 5.0 
> > and consider
> > >     things like cross compiling to 1.4 and back porting 
> portions of
> > >     libraries to be a potential solution.  It continues to be a
> > >     festering sore point though...
> > >>
> > >>
> > >>         -Pawel
> > >>
> > >>         Ed Merks wrote:
> > >>>         Pawel,
> > >>>
> > >>>         Lack of progress on the Java 5 front is 
> primarily an issue
> > >>>         with Sun's failure to keep the micro versions 
> > moving forward;
> > >>>         perhaps that's more my opinion than a fact.  I 
> > believe that a
> > >>>         5.0 JVM is not significantly bloated compared to 
> > 1.4 and that
> > >>>         migrating the micro libraries to 5.0 would not have a
> > >>>         bloating impact on those either.  It's pretty 
> > frustrating to
> > >>>         see stagnation of Java in one segment of the community. 
> > >>>         While some in the community focus on what will be 
> > in Java 7.0
> > >>>         others are stuck feeling like they will never be 
> > able to move
> > >>>         beyond 1.4.  >From an E4 perspective of wanting to keep
> > >>>         things lively, vibrant, modern, and 
> forward-looking, it's
> > >>>         particularly frustrating.  This case here is 
> just a micro
> > >>>         example of it.
> > >>>
> > >>>
> > >>>         Pawel Piech wrote:
> > >>>>         Hi John,
> > >>>>         I didn't mean to sound so categorical, so I 
> apologize for
> > >>>>         that.  As you mentioned in the bug it's likely 
> > parts or all
> > >>>>         of platform will never move to  Java 5, so 
> > preconditioning
> > >>>>         improvements in Eclipse APIs on it is a bad idea.  But
> > >>>>         whatever new APIs are created in this area, it would be
> > >>>>         ideal if they were designed in such a way that projects
> > >>>>         using Java 5 could still leverage the concurrent 
> > package and
> > >>>>         generics without having compatibility issues 
> with rest of
> > >>>>         platform.
> > >>>>
> > >>>>         Cheers,
> > >>>>         Pawel
> > >>>>
> > >>>>         John Arthorne wrote:
> > >>>>>
> > >>>>>         I didn't make the connection between the 
> CBFuture class
> > >>>>>         Martin proposed and Java 5's Future, so I 
> didn't mean to
> > >>>>>         compare the job API to the java.util.concurrent API. I
> > >>>>>         agree that java.util.concurrent does a very 
> good job of
> > >>>>>         separating concerns and providing reusable
> > >>>>>         interfaces/classes that we could incorporate 
> > into the Job
> > >>>>>         API and other Eclipse APIs. I know you're 
> > already aware of
> > >>>>>         it Pawel, but for others who are interested 
> there is an
> > >>>>>         existing bug report about making use of
> > >>>>>         java.util.concurrent API in the jobs API:
> > >>>>>         
> > https://bugs.eclipse.org/bugs/show_bug.cgi?id=178278. I've
> > >>>>>         referenced this thread in the bug so that the 
> > information
> > >>>>>         is available when the day comes that we can use 
> > Java 5 there.
> > >>>>>
> > >>>>>         John
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>         *Pawel Piech <pawel.piech@xxxxxxxxxxxxx>*
> > >>>>>         Sent by: eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
> > >>>>>
> > >>>>>         10/31/2008 12:53 PM
> > >>>>>         Please respond to
> > >>>>>         E4 developer list 
> <eclipse-incubator-e4-dev@xxxxxxxxxxx>
> > >>>>>
> > >>>>>
> > >>>>>         	
> > >>>>>         To
> > >>>>>         	E4 developer list 
> > <eclipse-incubator-e4-dev@xxxxxxxxxxx>
> > >>>>>         cc
> > >>>>>         	
> > >>>>>         Subject
> > >>>>>         	Re: [eclipse-incubator-e4-dev] 
> > Asynchronous Infrastructure
> > >>>>>         (was:        EFS,        ECF and asynchronous)
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>         	
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>         Hi John,
> > >>>>>
> > >>>>>         I don't think it's fair to compare just the *Future*
> > >>>>>         interface to the entire jobs API.  Future is a single
> > >>>>>         purpose interface, used to synchronously access 
> > a result of
> > >>>>>         an asynchronous operation.  Jobs API includes, in some
> > >>>>>         form, additional features found in the 
> > concurrent package:
> > >>>>>         *Executor* - In the concurrent package this is another
> > >>>>>         single-purpose interface which abstracts the task of
> > >>>>>         running an operation using some facility.  In 
> jobs API,
> > >>>>>         this facility is implemented as a thread pool, or a UI
> > >>>>>         dispatch loop when using UIJob.  
> > >>>>>         *Callable* - It's basically a runnable with a 
> > return value.
> > >>>>>          In jobs API, this is the Job.run():IStatus method.
> > >>>>>
> > >>>>>         IMO, the killer feature of the concurrent 
> > package is that
> > >>>>>         you can pick and choose the elements to use as is,
> > >>>>>         re-implement other elements, and invent new 
> elements as
> > >>>>>         needed.  With the jobs API the choice is either all or
> > >>>>>         nothing.  Looking forward in e4, or even 3.x, I 
> > hope that
> > >>>>>         Eclipse can support the complete java 
> > concurrent package as
> > >>>>>         a layer either above or below the jobs API.  
> > >>>>>          If it is above, then all that would be needed is an
> > >>>>>         Executor implementation which is a proxy to 
> the current
> > >>>>>         jobs API, which would simply execute Runnables and
> > >>>>>         Callables using Jobs.  If it is below, which I 
> > think is the
> > >>>>>         more work/more gain option, then the jobs API 
> becomes a
> > >>>>>         collection of components:
> > >>>>>         - JobManager becomes an Executor which accepts 
> > any Runnable
> > >>>>>         or Callable, where progress monitor and a 
> > scheduling rule
> > >>>>>         are optional.
> > >>>>>         - A Job becomes just an implementation of 
> > Callable<IStatus>.  
> > >>>>>         - UIJob is replaced by a separate implementation of an
> > >>>>>         Executor.  
> > >>>>>         - etc.
> > >>>>>          
> > >>>>>         Supporting the java concurrent package would 
> > only make the
> > >>>>>         current jobs api functionality more convenient and
> > >>>>>         extensible.  The larger goal for e4 should be to make
> > >>>>>         asynchronous programming in Eclipse easier and 
> > safer.  To
> > >>>>>         that end we'd need additional standard APIs for 
> > things like
> > >>>>>         callbacks and realms, and more importantly we'd 
> > need good
> > >>>>>         tooling for validating and debugging 
> > asynchronous systems.  
> > >>>>>
> > >>>>>         Cheers,
> > >>>>>         Pawel
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>>         John Arthorne wrote:
> > >>>>>
> > >>>>>         There doesn't seem to be much difference 
> > between the future
> > >>>>>         construct you describe and the Job API. You can attach
> > >>>>>         listeners to jobs which seems to be the same as your
> > >>>>>         Callback mechanism. Future.waitFor() is the same as
> > >>>>>         Job.join(), and Future.get() is similar to 
> > Job.getResult().
> > >>>>>         I did actually have futures in mind when 
> > designing the jobs
> > >>>>>         API, with the job's "result" being the 
> payload returned
> > >>>>>         from the asynchronous operation. I initially made this
> > >>>>>         result of type Object so clients could pass 
> > back whatever
> > >>>>>         return value they wanted. I then perhaps mistakenly
> > >>>>>         switched the result type to IStatus, thinking 
> > that clients
> > >>>>>         could return sub-types of Status containing any result
> > >>>>>         object they wanted. This is why I specified 
> > almost nothing
> > >>>>>         for the return value of Job#run and 
> > Job#getResult, leaving
> > >>>>>         it as a mechanism for clients to communicate 
> > whatever they
> > >>>>>         want back to the caller.  In reality it didn't 
> > end up being
> > >>>>>         used this way, because people fell into the 
> > common coding
> > >>>>>         patterns around IStatus and just returned the usual
> > >>>>>         OK/ERROR results.
> > >>>>>
> > >>>>>         So, I'm wondering if there's something 
> > fundamental missing
> > >>>>>         from Jobs that makes these asynchronous 
> coding patterns
> > >>>>>         difficult, and is there some incremental 
> > improvement we can
> > >>>>>         make to Jobs to make it as expressive and 
> useful as your
> > >>>>>         Future construct?  If not, the 
> > org.eclipse.core.jobs bundle
> > >>>>>         could still perhaps be a home for such an 
> API, since it
> > >>>>>         obviously needs a backing thread pool 
> > implementation with
> > >>>>>         support for progress monitors, etc.
> > >>>>>
> > >>>>>         John
> > >>>>>
> > >>>>>
> > >>>>>         Martin Oberhuber wrote on 10/30/2008 04:47:02 PM:
> > >>>>>
> > >>>>>         > Hi Scott, Pawel and all,
> > >>>>>         >
> > >>>>>         > it looks like this Thread has long left the 
> > resources/EFS
> > >>>>>         > aspect of things, and moved to a more general 
> > discussion
> > >>>>>         > about infrastructure for asynchronous 
> coding patterns.
> > >>>>>         >
> > >>>>>         > I'd thus like to make the discussion more 
> general. We
> > >>>>>         > seem to agree that there needs to be some 
> > base infrastructure
> > >>>>>         > for asynchronous coding patterns, and 
> > (perhaps even more
> > >>>>>         > important) API Documentation for how to 
> > properly use that
> > >>>>>         > infrastructure. If this base infrastructure 
> > is unified,
> > >>>>>         > we all win.
> > >>>>>         >
> > >>>>>         > Thanks Scott for volunteering to offer your 
> expertise
> > >>>>>         > as well as contributions. What could be the 
> next steps
> > >>>>>         > towards making it happen? I'm assuming that the base
> > >>>>>         > infrastructure should be in Equinox. Is anyone from
> > >>>>>         > the Equinox team listening and could guide through
> > >>>>>         > their process for contribution?
> > >>>>>         >
> > >>>>>         > Assuming that Equinox is right, we should 
> > perhaps first
> > >>>>>         > find a proper place for this discussion; then argue
> > >>>>>         > about good infrastructure/patterns; these need to be
> > >>>>>         > backed by some actual usage somewhere. Right now, it
> > >>>>>         > looks like what we'll want is at least
> > >>>>>         >
> > >>>>>         >   Future (aka RequestMonitor, AsyncExecutionResult)
> > >>>>>         >   Callback (aka Listener)
> > >>>>>         >   Status/MultiStatus (async variant)
> > >>>>>         >   Executor/Queue/Realm (for posting async 
> > Runnables/Callbacks
> > >>>>>         >           in a well-known Thread)
> > >>>>>         >
> > >>>>>         > along with some well-documented Exception types
> > >>>>>         (cancellation,
> > >>>>>         > timeout) as well as Threading paradigm.
> > >>>>>         >
> > >>>>>         > How to proceed from here? Potential clients of async
> > >>>>>         > certainly include DD/DSF and ECF, perhaps 
> > Resources/EFS;
> > >>>>>         > who else is interested in infrastructure for async?
> > >>>>>         >
> > >>>>>         > Cheers,
> > >>>>>         > --
> > >>>>>         > Martin Oberhuber, Senior Member of Technical 
> > Staff, Wind
> > >>>>>         River
> > >>>>>         > Target Management Project Lead, DSDP PMC Member
> > >>>>>         > _http://www.eclipse.org/dsdp/tm_
> > >>>>>         >  
> > >>>>>         >  
> > >>>>>         >
> > >>>>>         > > -----Original Message-----
> > >>>>>         > > From: 
> _eclipse-incubator-e4-dev-bounces@eclipse.org_
> > >>>>>         <mailto:eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx>
> > >>>>>         > > 
> > [_mailto:eclipse-incubator-e4-dev-bounces@eclipse.org_] On
> > >>>>>         > > Behalf Of Scott Lewis
> > >>>>>         > > Sent: Wednesday, October 29, 2008 7:06 PM
> > >>>>>         > > To: E4 developer list
> > >>>>>         > > Subject: Re: [eclipse-incubator-e4-dev] 
> [resources]
> > >>>>>         EFS, ECF
> > >>>>>         > > and asynchronous
> > >>>>>         > >
> > >>>>>         > > Hi Martin,
> > >>>>>         > >
> > >>>>>         > > Oberhuber, Martin wrote:
> > >>>>>         > > > Hi Scott,
> > >>>>>         > > >
> > >>>>>         > > > to me, Futures and Listeners don't need to be a
> > >>>>>         contradiction.
> > >>>>>         > > >  
> > >>>>>         > >
> > >>>>>         > > Before my further comments...I don't 
> > believe they are in
> > >>>>>         > > conflict either
> > >>>>>         > > (that is, both can be used in some cases as 
> > described
> > >>>>>         by Martin).  I
> > >>>>>         > > guess I sort of presented them as 
> > exclusive, but I didn't
> > >>>>>         > > really mean to
> > >>>>>         > > have it be so.
> > >>>>>         > >
> > >>>>>         > > > What's more interesting to me, is how 
> to deal with
> > >>>>>         Progress.
> > >>>>>         > > > When a Progress Monitor already exists for the
> > >>>>>         client, then
> > >>>>>         > > > using it makes a lot of sense even if the 
> > result is
> > >>>>>         obtained
> > >>>>>         > > > asynchronously:
> > >>>>>         > > >
> > >>>>>         > > > final CBFuture<IFileStore[]> childrenF =
> > >>>>>         > > myFileStore.list(myProgress);
> > >>>>>         > > > childrenF.chain(new Callback() {
> > >>>>>         > > >    public void onDone(IStatus result) {
> > >>>>>         > > >       if (result.isOK()) {
> > >>>>>         > > >          handleResult(childrenF.get());
> > >>>>>         > > >       }
> > >>>>>         > > >    };
> > >>>>>         > > > });
> > >>>>>         > > >
> > >>>>>         > > > I'm using class "CBFuture" as an 
> "enhanced Future"
> > >>>>>         that allows
> > >>>>>         > > > registering Callbacks. Using a Callback style of
> > >>>>>         handling things,
> > >>>>>         > > > or CBFuture.waitFor() remains up to the 
> > client. Note
> > >>>>>         that I'm
> > >>>>>         > > > using a "chain()" method to indicate that the
> > >>>>>         Framework/Future could
> > >>>>>         > > > allow chaining multiple callbacks such 
> that one is
> > >>>>>         exeucuted after
> > >>>>>         > > > the other. Also note how the callback 
> > retrieves the
> > >>>>>         result of
> > >>>>>         > > > computation from the Future, and not from the
> > >>>>>         callback itself.
> > >>>>>         > > >  
> > >>>>>         > >
> > >>>>>         > > I agree that the general issue of how to handle
> > >>>>>         progress monitors is
> > >>>>>         > > tricky.  Although I accept your ideas above 
> > as a possible
> > >>>>>         > > solution, I'm
> > >>>>>         > > not sure whether this is the 'right' 
> > mechanism or not
> > >>>>>         for 'remote
> > >>>>>         > > progress monitoring'.  I've been thinking 
> about this
> > >>>>>         for some
> > >>>>>         > > time, but
> > >>>>>         > > still don't feel like I have a good 
> general solution
> > >>>>>         for supporting
> > >>>>>         > > IProgressMonitor for remote procedures.
> > >>>>>         > >
> > >>>>>         > > > The problems that I have seen with 
> > callbacks in our
> > >>>>>         products
> > >>>>>         > > > in the past are listed on
> > >>>>>         > > >
> > >>>>>         > >
> > >>>>>         
> > _http://wiki.eclipse.org/E4/Pervasive_Themes#Becoming_More_Asy
> > nchronous_
> > >>>>>         > > >
> > >>>>>         > > > * Much boilerplate code - Closures would 
> > be nice to
> > >>>>>         avoid explosion
> > >>>>>         > > >   of anonymous inner classes, which could 
> > cause bloat
> > >>>>>         > > >
> > >>>>>         > > > * Need clarification on what thread and in what
> > >>>>>         context the
> > >>>>>         > > >   callback will be called
> > >>>>>         > > >
> > >>>>>         > > > * When debugging, it is very hard to 
> > trace back the
> > >>>>>         flow of
> > >>>>>         > > >   operation across multiple callback 
> > invocations. It
> > >>>>>         can even
> > >>>>>         > > >   make debuging close to impossible 
> > unless some Tracing
> > >>>>>         > > >   functionality for the callbacks is 
> > built into the
> > >>>>>         Framework
> > >>>>>         > > >   (we ended up doing this in our 
> > commercial product).
> > >>>>>         > > >
> > >>>>>         > > > * Exception handling needs to be 
> clarified. Java6
> > >>>>>         Future only
> > >>>>>         > > >   provides Future#isCanceled(), that's 
> not enough
> > >>>>>         since the
> > >>>>>         > > >   result of an operation might also be an 
> > exception. I'm
> > >>>>>         > > >   introducint "Istatus result" above but 
> > that's also not
> > >>>>>         > > >   optimal.
> > >>>>>         > > >  
> > >>>>>         > >
> > >>>>>         > > I agree these are other issues...thanks.
> > >>>>>         > >
> > >>>>>         > >
> > >>>>>         > > > The synchronous variant needs more 
> > verbosity writing
> > >>>>>         it than
> > >>>>>         > > > one would expect, because cancellation 
> and errors
> > >>>>>         (exceptions)
> > >>>>>         > > > need to be handled, wrapped and potentially
> > >>>>>         re-wrapped with
> > >>>>>         > > > Futures:
> > >>>>>         > > >
> > >>>>>         > > > final CBFuture<IFileStore[]> childrenF =
> > >>>>>         > > myFileStore.list(myProgress);
> > >>>>>         > > > try {
> > >>>>>         > > >    handleResult(childrenF.get());
> > >>>>>         > > > } catch(CancellationException e) {
> > >>>>>         > > >    throw new OperationCancelledException(e);
> > >>>>>         > > > } catch(ExecutionExeption e) {
> > >>>>>         > > >    throw new CoreException(new 
> > Status(/*.blabla*/));
> > >>>>>         > > > }
> > >>>>>         > > >
> > >>>>>         > > > although that could perhaps be simplified if we
> > >>>>>         declared some
> > >>>>>         > > > Eclipse specific implementation of Future which
> > >>>>>         throws the
> > >>>>>         > > > kinds of Exceptions that we already know (like
> > >>>>>         CoreException
> > >>>>>         > > > embedding an Istatus) instead of the JRE's
> > >>>>>         ExecutionException
> > >>>>>         > > > that's really alien to our current code.
> > >>>>>         > > >  
> > >>>>>         > >
> > >>>>>         > > Yes, I agree that these are issues.  I also 
> > agree that
> > >>>>>         it would be
> > >>>>>         > > useful to have Equinox-specific impls of 
> > Future (which
> > >>>>>         is really what
> > >>>>>         > > the IAsyncResult interface was meant to be 
> > and can/will
> > >>>>>         > > change to be if
> > >>>>>         > > desired).  Further, I've recently also 
> > realized that there
> > >>>>>         > > also should
> > >>>>>         > > probably be something like remote impls of
> > >>>>>         > > IStatus/MultiStatus, as I've
> > >>>>>         > > been doing some remote mgmt interfaces 
> > (i.e. accessing
> > >>>>>         and managing a
> > >>>>>         > > remote processes' OSGi framework, p2, 
> > etc)...and it's
> > >>>>>         clear
> > >>>>>         > > to me that
> > >>>>>         > > it is going to be very helpful to support 
> > the usage of
> > >>>>>         > > IStatus/Multistatus as return values, as well as
> > >>>>>         exceptions in remote
> > >>>>>         > > service access.  I agree that 
> Future/IAsyncResult as
> > >>>>>         well as
> > >>>>>         > > IStatus/Multistatus and exception types 
> > should be widely
> > >>>>>         > > available (i.e.
> > >>>>>         > > in Equinox rather than redone/available in many
> > >>>>>         locations above
> > >>>>>         > > Equinox).  We (ECF) are willing to contribute (and
> > >>>>>         modify as desired)
> > >>>>>         > > what we've done in this area (e.g. 
> > IAsyncResult+impl,
> > >>>>>         > > RemoteStatus/RemoteMultiStatus, exception 
> types) as
> > >>>>>         desired.
> > >>>>>         > >
> > >>>>>         > > Scott
> > >>>>>         > >
> > >>>>>         > >
> > >>>>>         > >
> > >>>>>         > > > Cheers,
> > >>>>>         > > > --
> > >>>>>         > > > Martin Oberhuber, Senior Member of 
> > Technical Staff,
> > >>>>>         Wind River
> > >>>>>         > > > Target Management Project Lead, DSDP PMC Member
> > >>>>>         > > > _http://www.eclipse.org/dsdp/tm_
> > >>>>>         > > > _______________________________________________
> > >>>>>         > > > eclipse-incubator-e4-dev mailing list
> > >>>>>         > > > _eclipse-incubator-e4-dev@eclipse.org_
> > >>>>>         <mailto:eclipse-incubator-e4-dev@xxxxxxxxxxx>
> > >>>>>         > > >
> > >>>>>         
> > _https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev_
> > >>>>>         > > >  
> > >>>>>         > >
> > >>>>>         > > _______________________________________________
> > >>>>>         > > eclipse-incubator-e4-dev mailing list
> > >>>>>         > > _eclipse-incubator-e4-dev@eclipse.org_
> > >>>>>         <mailto:eclipse-incubator-e4-dev@xxxxxxxxxxx>
> > >>>>>         > >
> > >>>>>         
> > _https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev_
> > >>>>>         > >
> > >>>>>         > _______________________________________________
> > >>>>>         > eclipse-incubator-e4-dev mailing list
> > >>>>>         > _eclipse-incubator-e4-dev@eclipse.org_
> > >>>>>         <mailto:eclipse-incubator-e4-dev@xxxxxxxxxxx>
> > >>>>>         >
> > >>>>>         
> > _https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev_
> > >>>>>
> > >>>>>
> > >>>>>         
> > --------------------------------------------------------------
> > ----------
> > >>>>>
> > >>>>>         _______________________________________________
> > >>>>>         eclipse-incubator-e4-dev mailing list
> > >>>>>         _eclipse-incubator-e4-dev@eclipse.org_
> > >>>>>         <mailto:eclipse-incubator-e4-dev@xxxxxxxxxxx>
> > >>>>>         
> > _https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev_
> > >>>>>          
> > >>>>>         _______________________________________________
> > >>>>>         eclipse-incubator-e4-dev mailing list
> > >>>>>         eclipse-incubator-e4-dev@xxxxxxxxxxx
> > >>>>>         
> > https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> > >>>>>
> > >>>>>         
> > --------------------------------------------------------------
> > ----------
> > >>>>>
> > >>>>>         _______________________________________________
> > >>>>>         eclipse-incubator-e4-dev mailing list
> > >>>>>         eclipse-incubator-e4-dev@xxxxxxxxxxx
> > >>>>>         
> > https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> > >>>>>           
> > >>>>
> > >>>>         
> > --------------------------------------------------------------
> > ----------
> > >>>>
> > >>>>         _______________________________________________
> > >>>>         eclipse-incubator-e4-dev mailing list
> > >>>>         eclipse-incubator-e4-dev@xxxxxxxxxxx
> > >>>>         
> > https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> > >>>>           
> > >>>         
> > --------------------------------------------------------------
> > ----------
> > >>>
> > >>>         _______________________________________________
> > >>>         eclipse-incubator-e4-dev mailing list
> > >>>         eclipse-incubator-e4-dev@xxxxxxxxxxx
> > >>>         
> > https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> > >>>           
> > >>
> > >>     
> > --------------------------------------------------------------
> > ----------
> > >>
> > >>     _______________________________________________
> > >>     eclipse-incubator-e4-dev mailing list
> > >>     eclipse-incubator-e4-dev@xxxxxxxxxxx
> > >>     
> > https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> > >>       
> > > 
> > > 
> > > 
> > --------------------------------------------------------------
> > ----------
> > > 
> > > _______________________________________________
> > > eclipse-incubator-e4-dev mailing list
> > > eclipse-incubator-e4-dev@xxxxxxxxxxx
> > > https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> > 
> > 
> > -- 
> > B e s t S o l u t i o n . a t                        EDV 
> > Systemhaus GmbH
> > --------------------------------------------------------------
> > ----------
> > tom schindl                               leiter 
> > softwareentwicklung/CSO
> > --------------------------------------------------------------
> > ----------
> > eduard-bodem-gasse 8/3    A-6020 innsbruck      phone    ++43 
> > 512 935834
> > _______________________________________________
> > eclipse-incubator-e4-dev mailing list
> > eclipse-incubator-e4-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> > 
> _______________________________________________
> eclipse-incubator-e4-dev mailing list
> eclipse-incubator-e4-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev
> 


Back to the top