You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Johnny Kewl <jo...@kewlstuff.co.za> on 2008/03/01 23:11:40 UTC

JRE Lite

TIm... you right too much in one topic so split...

You know when you discovering something, its not a science, its exploration, and I havent even got
the dev env going yet so still very low on the learning curve... but this is what I'm thinking..

The basic JRE engine must be completely plugable... dynamic loading as you call it.
At a quick glance the really big components are things like the JIT compiler,
The fonts, all the "base" classes and the Unicode... I think its a unicode module.

Now here is what I'm thinking... the JRE gets stripped right down...
So for example it looks for JIT but if it cant find it is doesnt crash.

Then instead of making users download... there is a Harmony site and on this site, are all the fonts, all the classes... optional UTF modules etc etc.

The initial download is just a bootstrap... it can either be downloaded or included with the software...
If it needs a Comic font and UTF module... it fetches it, just enuf to get that application running.
So if the users runs a series of small applications they all very quick installs, but the JRE is growing...
So by the time the user installs a heavy application, the JRE will probably do it all.

In this scheme there is also no concept of versioning... if a class is loaded that needs a new JRE lite module
it will just happen.... the user is hassle free.

So there is still a installation server somewhere.... but the user doesnt even have to know about it.
That kind of dynamic loading means the JRE must fit together like a jigsaw puzzle..

For example the first run of an application may run without JIT, but the JRE's background loader starts to pull
it down... the next run will be fast....

The reason I asked about the interchangability is because if one has a small engine that can get only what it has to... then that gets very interesting.
For example, if a machine already has classpaths all over the place.... and a JavaLite hits the machine.... it gets only what it needs, ie it gets
a few core classes, maybe a few fonts, maybe its own multimedia engine.... but it does not have to get anything else... it does not have
to tell the users to setup xerces again... it see's wots on the machine already and uses it... so theres the compatability side... the creativity
side is that the Java application downloaded, may also be able to suck down a native module, or custom class modules that do stuff like play
Flash Video... now thats a JRE ;)

So... when I get going I'm going to break Harmony into tini weenie pieces.... ha ha.
In this model, one does not even care about classes.... its just that engine that must be able to discover and use whats there, or pull it from a installation server.
Apps have the choice of using there own JRE Lite... or the systems JRE ;) but I think if that JRELite is small enuf... it will go out with every application.
Installers will use that... for sure, it makes life very easy.

... so thats the idea... whether it will pan out, and the idea is possible, I dont know... I cant see why not....

Some application will be unlucky... they internationalized the developer has gone mad with XML, use JPA, JMX, JWhatever... and yes that
apps JRE will have to build itself up to 10 megs before it will run... but a game using JNI and doing its own drawing will probably run on a 500k JRE

Developers will very quickly learn what make the JRE take a big hit.... I think thats a good thing, all the technology is there but depending on what
system they targeting.... they will design accordingly, possibly using property files instead of XML parsing...

So... once I get going thats my hobby for the next 4 months ;)
If it works... you'll have to make another SVN fork;)

Re: JRE Lite

Posted by Xiao-Feng Li <xi...@gmail.com>.
On Tue, Apr 29, 2008 at 10:46 AM, Sergey Salishev
<se...@gmail.com> wrote:
> Hi Xiao-Feng,
>
>  I wrote mostly about RE JRE. Harmony currenty lacks both features - class
>  data sharing and kernel distribution. The 3MB statement is only an
>  interpretation of the Alexey's link abount the new distribution mode of 6u10
>  release.
>
>  I think *HARMONY-5513* <https://issues.apache.org/jira/browse/HARMONY-5513>
>  covers the class data sharing feature for Harmony, but it's closed.

Ok, I see. We may want to contact the JIRA reporter checking if he
still has any patch available for POC, even not applicable.

Thanks.
xiaofeng

>  Thanks.
>  Sergey.
>
>
>
>
>  On Tue, Apr 29, 2008 at 3:41 AM, Xiao-Feng Li <xi...@gmail.com> wrote:
>
>  > Sergey, interesting comments. Startup is surely a topic that should be
>  > addressed. Your comments are helpful.
>  >
>  > I am not very sure about the footprint. Does Harmony have a solution
>  > for small footprint?  What is "With the Kernel distribution it's only
>  > 3MB"? Thanks.
>  >
>  > -xiaofeng
>  >
>  > On Tue, Apr 29, 2008 at 3:17 AM, Sergey Salishev
>  > <se...@gmail.com> wrote:
>  > > Hi,
>  > >
>  > >  Alexey, thanks for the link. I don't think the distribution size is the
>  > >  biggest JRE problem for client applications. Anyway even without Kernel
>  > >  distribution RE JRE is only 15MB which is substantially smaller than
>  > .NET
>  > >  framework redistributable. With the Kernel distribution it's only 3MB
>  > about
>  > >  2x Flash Player size :)
>  > >
>  > >  JRE's three biggest problems I think are slow startup, large footprint
>  > and
>  > >  GC pauses. The footprint problem is generally solved by data sharing
>  > between
>  > >  JVM instances. The GC pauses can be helped by using incremental or
>  > >  concurrent GC.
>  > >
>  > >  The startup time tougher problem. It's almost unrelated to the
>  > ditribution
>  > >  size as only the used classes are loaded. But it's governed by the
>  > class
>  > >  parsing and no-opt JIT/interpreter overhead. It's possible to make JRE
>  > >  startup to be more lean and mean. But the real answer here is excluding
>  > the
>  > >  classloading and JIT phase from startup altogether at least for
>  > frequently
>  > >  used components.  The good news are that most of the frequently used
>  > classes
>  > >  for small applications are located in class libraries. RE JRE as I
>  > remember
>  > >  already can precompile rt.jar and use that fact. .NET has a signed
>  > binary
>  > >  module cache and the application installer can compile the model AOT
>  > and
>  > >  place it to cache.
>  > >
>  > >  The bbiggest  problems of AOT compiled module caching are class
>  > versioning
>  > >  and security. I think it's possible to implement such mechanism for
>  > Java
>  > >  using Jar files as an atomic modules for AOT caching. In this case the
>  > Jar
>  > >  signature would be used for module versioning and ensuring the binary
>  > code
>  > >  is unmodified. We already made some experiments and caching on
>  > individual
>  > >  method level doesn't give any performance boost due to class loading
>  > and
>  > >  signing overhead.
>  > >
>  > >  Thanks.
>  > >  Sergey.
>  > >
>  > >  2008/4/28 Alexey Petrenko <al...@gmail.com>:
>  > >
>  > >
>  > >
>  > >  >
>  > >  >
>  > http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#kernel
>  > >  >
>  > >
>  >
>  >
>  >
>  > --
>  > http://xiao-feng.blogspot.com
>  >
>



-- 
http://xiao-feng.blogspot.com

Re: JRE Lite

Posted by Sergey Salishev <se...@gmail.com>.
Hi Xiao-Feng,

I wrote mostly about RE JRE. Harmony currenty lacks both features - class
data sharing and kernel distribution. The 3MB statement is only an
interpretation of the Alexey's link abount the new distribution mode of 6u10
release.

I think *HARMONY-5513* <https://issues.apache.org/jira/browse/HARMONY-5513>
covers the class data sharing feature for Harmony, but it's closed.

Thanks.
Sergey.


On Tue, Apr 29, 2008 at 3:41 AM, Xiao-Feng Li <xi...@gmail.com> wrote:

> Sergey, interesting comments. Startup is surely a topic that should be
> addressed. Your comments are helpful.
>
> I am not very sure about the footprint. Does Harmony have a solution
> for small footprint?  What is "With the Kernel distribution it's only
> 3MB"? Thanks.
>
> -xiaofeng
>
> On Tue, Apr 29, 2008 at 3:17 AM, Sergey Salishev
> <se...@gmail.com> wrote:
> > Hi,
> >
> >  Alexey, thanks for the link. I don't think the distribution size is the
> >  biggest JRE problem for client applications. Anyway even without Kernel
> >  distribution RE JRE is only 15MB which is substantially smaller than
> .NET
> >  framework redistributable. With the Kernel distribution it's only 3MB
> about
> >  2x Flash Player size :)
> >
> >  JRE's three biggest problems I think are slow startup, large footprint
> and
> >  GC pauses. The footprint problem is generally solved by data sharing
> between
> >  JVM instances. The GC pauses can be helped by using incremental or
> >  concurrent GC.
> >
> >  The startup time tougher problem. It's almost unrelated to the
> ditribution
> >  size as only the used classes are loaded. But it's governed by the
> class
> >  parsing and no-opt JIT/interpreter overhead. It's possible to make JRE
> >  startup to be more lean and mean. But the real answer here is excluding
> the
> >  classloading and JIT phase from startup altogether at least for
> frequently
> >  used components.  The good news are that most of the frequently used
> classes
> >  for small applications are located in class libraries. RE JRE as I
> remember
> >  already can precompile rt.jar and use that fact. .NET has a signed
> binary
> >  module cache and the application installer can compile the model AOT
> and
> >  place it to cache.
> >
> >  The bbiggest  problems of AOT compiled module caching are class
> versioning
> >  and security. I think it's possible to implement such mechanism for
> Java
> >  using Jar files as an atomic modules for AOT caching. In this case the
> Jar
> >  signature would be used for module versioning and ensuring the binary
> code
> >  is unmodified. We already made some experiments and caching on
> individual
> >  method level doesn't give any performance boost due to class loading
> and
> >  signing overhead.
> >
> >  Thanks.
> >  Sergey.
> >
> >  2008/4/28 Alexey Petrenko <al...@gmail.com>:
> >
> >
> >
> >  >
> >  >
> http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#kernel
> >  >
> >
>
>
>
> --
> http://xiao-feng.blogspot.com
>

Re: JRE Lite

Posted by Xiao-Feng Li <xi...@gmail.com>.
Sergey, interesting comments. Startup is surely a topic that should be
addressed. Your comments are helpful.

I am not very sure about the footprint. Does Harmony have a solution
for small footprint?  What is "With the Kernel distribution it's only
3MB"? Thanks.

-xiaofeng

On Tue, Apr 29, 2008 at 3:17 AM, Sergey Salishev
<se...@gmail.com> wrote:
> Hi,
>
>  Alexey, thanks for the link. I don't think the distribution size is the
>  biggest JRE problem for client applications. Anyway even without Kernel
>  distribution RE JRE is only 15MB which is substantially smaller than .NET
>  framework redistributable. With the Kernel distribution it's only 3MB about
>  2x Flash Player size :)
>
>  JRE's three biggest problems I think are slow startup, large footprint and
>  GC pauses. The footprint problem is generally solved by data sharing between
>  JVM instances. The GC pauses can be helped by using incremental or
>  concurrent GC.
>
>  The startup time tougher problem. It's almost unrelated to the ditribution
>  size as only the used classes are loaded. But it's governed by the class
>  parsing and no-opt JIT/interpreter overhead. It's possible to make JRE
>  startup to be more lean and mean. But the real answer here is excluding the
>  classloading and JIT phase from startup altogether at least for frequently
>  used components.  The good news are that most of the frequently used classes
>  for small applications are located in class libraries. RE JRE as I remember
>  already can precompile rt.jar and use that fact. .NET has a signed binary
>  module cache and the application installer can compile the model AOT and
>  place it to cache.
>
>  The bbiggest  problems of AOT compiled module caching are class versioning
>  and security. I think it's possible to implement such mechanism for Java
>  using Jar files as an atomic modules for AOT caching. In this case the Jar
>  signature would be used for module versioning and ensuring the binary code
>  is unmodified. We already made some experiments and caching on individual
>  method level doesn't give any performance boost due to class loading and
>  signing overhead.
>
>  Thanks.
>  Sergey.
>
>  2008/4/28 Alexey Petrenko <al...@gmail.com>:
>
>
>
>  >
>  > http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#kernel
>  >
>



-- 
http://xiao-feng.blogspot.com

Re: JRE Lite

Posted by Sergey Salishev <se...@gmail.com>.
Hi,

Alexey, thanks for the link. I don't think the distribution size is the
biggest JRE problem for client applications. Anyway even without Kernel
distribution RE JRE is only 15MB which is substantially smaller than .NET
framework redistributable. With the Kernel distribution it's only 3MB about
2x Flash Player size :)

JRE's three biggest problems I think are slow startup, large footprint and
GC pauses. The footprint problem is generally solved by data sharing between
JVM instances. The GC pauses can be helped by using incremental or
concurrent GC.

The startup time tougher problem. It's almost unrelated to the ditribution
size as only the used classes are loaded. But it's governed by the class
parsing and no-opt JIT/interpreter overhead. It's possible to make JRE
startup to be more lean and mean. But the real answer here is excluding the
classloading and JIT phase from startup altogether at least for frequently
used components.  The good news are that most of the frequently used classes
for small applications are located in class libraries. RE JRE as I remember
already can precompile rt.jar and use that fact. .NET has a signed binary
module cache and the application installer can compile the model AOT and
place it to cache.

The bbiggest  problems of AOT compiled module caching are class versioning
and security. I think it's possible to implement such mechanism for Java
using Jar files as an atomic modules for AOT caching. In this case the Jar
signature would be used for module versioning and ensuring the binary code
is unmodified. We already made some experiments and caching on individual
method level doesn't give any performance boost due to class loading and
signing overhead.

Thanks.
Sergey.

2008/4/28 Alexey Petrenko <al...@gmail.com>:

>
> http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#kernel
>

Re: JRE Lite

Posted by Alexey Petrenko <al...@gmail.com>.
http://java.sun.com/developer/technicalArticles/javase/java6u10/index.html#kernel

Re: JRE Lite

Posted by Egor Pasko <eg...@gmail.com>.
On the 0x3FD day of Apache Harmony Johnny Kewl wrote:
> >> A JRE is already selecting what an application needs to run, and does
> >> it a lot better than a human.
> >
> > This is arguable. Why then Linux packages are not downloade
> > automatically when you issue unexisting commands on your Linux box?
> >
> > Maybe because packages sometimes need to be configured before you run
> > something on top of them.
> >
> > Another point, humans are very intelligent to control things that
> > humans want. For example, I _want_ to know what is installed on my
> > system. And many people are like me))
> >
> > Another use-case, you might want to duplicate a set of packages from
> > box A to box B. You just want to damn install the packabes and not
> > make Java damn slow on the first run on box B. Applications should be
> > packages too, aligned with philosophy of JPackage project.
> >
> > This is really interesting. Because it allows to make
> > _custom_distributions_ on top of Java and extend them on as-needed
> > basis.
> 
> I see where you coming from, yes the user would now have a choice, if
> they a microsoft user... ha ha, they will click
> on it and it starts... they dont understand why, but it just starts
> and works. They dont even have to know what Java is.
> Then because JRELite (a paradox) would now also have thousands of
> tools on a server, yes there could be a
> debian type apt-get package that lets an expert choose and precofigure
> all their tools, thus allowing off server
> installation as well. JRELite would make java feel a lot like a linux
> dist in some ways.

OK, my suggestion is just to add more agility to your project:
implement the debian way as the simpler and more developer-oriented
approach (keeping alternatives in mind, of course:)

> ... but if the user is a moron... it just works anyway ;)

do not say it like that about our lovely users! More politely: "a
mouse-oriented user" :)

-- 
Egor Pasko


Re: JRE Lite

Posted by Johnny Kewl <jo...@kewlstuff.co.za>.
----- Original Message ----- 
From: "Egor Pasko" <eg...@gmail.com>
To: <de...@harmony.apache.org>
Sent: Tuesday, March 04, 2008 12:39 PM
Subject: Re: JRE Lite


> On the 0x3FD day of Apache Harmony Johnny Kewl wrote:
>> [snip]
>>
>> >> I think size and speed tradeoffs, and the intelligence required will
>> >> make it really
>> >> interesting... if we get there a lot of fun.
>> >
>> > How about a bit of somewhat easier stuff?
>> >
>> > shell> java-intaller install --all-deps swing
>> >
>> > (where, 'swing' is the package name)
>> >
>> > I.e. get basic JVM, then control which packages to install by hand. No
>> > pain. The only weird thing is that to deliver a Java app one must
>> > provide it with list of dependencies. But this is rather common and
>> > convenient in open source world.
>>
>> A JRE is already selecting what an application needs to run, and does
>> it a lot better than a human.
>
> This is arguable. Why then Linux packages are not downloade
> automatically when you issue unexisting commands on your Linux box?
>
> Maybe because packages sometimes need to be configured before you run
> something on top of them.
>
> Another point, humans are very intelligent to control things that
> humans want. For example, I _want_ to know what is installed on my
> system. And many people are like me))
>
> Another use-case, you might want to duplicate a set of packages from
> box A to box B. You just want to damn install the packabes and not
> make Java damn slow on the first run on box B. Applications should be
> packages too, aligned with philosophy of JPackage project.
>
> This is really interesting. Because it allows to make
> _custom_distributions_ on top of Java and extend them on as-needed
> basis.

I see where you coming from, yes the user would now have a choice, if they a 
microsoft user... ha ha, they will click
on it and it starts... they dont understand why, but it just starts and 
works. They dont even have to know what Java is.
Then because JRELite (a paradox) would now also have thousands of tools on a 
server, yes there could be a
debian type apt-get package that lets an expert choose and precofigure all 
their tools, thus allowing off server
installation as well. JRELite would make java feel a lot like a linux dist 
in some ways.
... but if the user is a moron... it just works anyway ;)

>> An application actually uses much less than its "bundle".
>> Also as a developer you do not know what is on the users machine 
>> already....
>> If the last application used Swing... this application will not need
>> to get it again ;)
>>
>> Its a very simple concept actually... if you see the whole JRE as 100%
>> I think most applications on use 10%
>> Heavy applications 60%
>>
>> But with every run, the usage drops off exponentially...
>>
>> If app A  used 20% when it runs on its own.
>> And another app B uses 25% when it runs on its own.
>>
>> Then first App run = 20%
>> Second App run 5%
>>
>> A developer cant control that because the JRE is a learning system....
>>
>> But it also means this... have you ever wondered why multimedia and
>> video are not packed with Java...
>> Its because if it not main stream or popular... Java has a thud factor
>> problem.
>> In a scheme like this... the JRE engine could be a 1000 gigs...
>> It doesnt matter, the app only uses what it needs.... and now...
>> USB support...
>> Video Editing, Streaming...
>> Companies that woudnt even look at Java would add in Flash players...
>> Medical companies could add in special Hospital stuff.... the API
>> would be endless...
>>
>> Java just for business is boring... this would make a Java for the 
>> world...
>>
>> The PANIC Harmony sub-project would be the busiest open source project
>> on the web... I think ;)
>> I think its a way to turn the guru's loose and let them change the
>> world :)... make it a whole lot better.
>>
>> So make java deliverable.... and the sun will really shine ;)
>>
>
> [snip]
>
> -- 
> Egor Pasko
>
> 


Re: JRE Lite

Posted by Egor Pasko <eg...@gmail.com>.
On the 0x3FD day of Apache Harmony Johnny Kewl wrote:
> [snip]
>
> >> I think size and speed tradeoffs, and the intelligence required will
> >> make it really
> >> interesting... if we get there a lot of fun.
> >
> > How about a bit of somewhat easier stuff?
> >
> > shell> java-intaller install --all-deps swing
> >
> > (where, 'swing' is the package name)
> >
> > I.e. get basic JVM, then control which packages to install by hand. No
> > pain. The only weird thing is that to deliver a Java app one must
> > provide it with list of dependencies. But this is rather common and
> > convenient in open source world.
> 
> A JRE is already selecting what an application needs to run, and does
> it a lot better than a human.

This is arguable. Why then Linux packages are not downloade
automatically when you issue unexisting commands on your Linux box?

Maybe because packages sometimes need to be configured before you run
something on top of them.

Another point, humans are very intelligent to control things that
humans want. For example, I _want_ to know what is installed on my
system. And many people are like me))

Another use-case, you might want to duplicate a set of packages from
box A to box B. You just want to damn install the packabes and not
make Java damn slow on the first run on box B. Applications should be
packages too, aligned with philosophy of JPackage project.

This is really interesting. Because it allows to make
_custom_distributions_ on top of Java and extend them on as-needed
basis.

> An application actually uses much less than its "bundle".
> Also as a developer you do not know what is on the users machine already....
> If the last application used Swing... this application will not need
> to get it again ;)
> 
> Its a very simple concept actually... if you see the whole JRE as 100%
> I think most applications on use 10%
> Heavy applications 60%
> 
> But with every run, the usage drops off exponentially...
> 
> If app A  used 20% when it runs on its own.
> And another app B uses 25% when it runs on its own.
> 
> Then first App run = 20%
> Second App run 5%
> 
> A developer cant control that because the JRE is a learning system....
> 
> But it also means this... have you ever wondered why multimedia and
> video are not packed with Java...
> Its because if it not main stream or popular... Java has a thud factor
> problem.
> In a scheme like this... the JRE engine could be a 1000 gigs...
> It doesnt matter, the app only uses what it needs.... and now...
> USB support...
> Video Editing, Streaming...
> Companies that woudnt even look at Java would add in Flash players...
> Medical companies could add in special Hospital stuff.... the API
> would be endless...
> 
> Java just for business is boring... this would make a Java for the world...
> 
> The PANIC Harmony sub-project would be the busiest open source project
> on the web... I think ;)
> I think its a way to turn the guru's loose and let them change the
> world :)... make it a whole lot better.
> 
> So make java deliverable.... and the sun will really shine ;)
> 

[snip]

-- 
Egor Pasko


Re: JRE Lite

Posted by Johnny Kewl <jo...@kewlstuff.co.za>.
----- Original Message ----- 
From: "Egor Pasko" <eg...@gmail.com>
To: <de...@harmony.apache.org>
Sent: Monday, March 03, 2008 2:54 PM
Subject: Re: JRE Lite


> On the 0x3FC day of Apache Harmony Johnny Kewl wrote:
>> ----- Original Message ----- 
>> From: "Egor Pasko" <eg...@gmail.com>
>> To: <de...@harmony.apache.org>
>> Sent: Monday, March 03, 2008 10:12 AM
>> Subject: Re: JRE Lite
>>
>>
>> > On the 0x3FC day of Apache Harmony Johnny Kewl wrote:
>> >> ----- Original Message ----- 
>> >> From: "Tim Ellison" <t....@gmail.com>
>> >> To: <de...@harmony.apache.org>
>> >> Sent: Sunday, March 02, 2008 9:02 PM
>> >> Subject: Re: JRE Lite
>> >>
>> >>
>> >> > Your ideas sound quite reasonable to me.  I bet you are surprised
>> >> > about how much code is run just to invoke main(String[]) in a Java
>> >> > program, but I see your idea.
>> >> >
>> >> > If you get it working we'd be delighted to create you a branch!
>> >>
>> >> Heres to hoping it pans out, I do realize that this burger may be
>> >> bigger than my bite ;)
>> >> Expect a lot of questions in the beginning, if it starts to work as a
>> >> rough prototype
>> >> I'll yell.
>> >> You would also have to consider carefully who sponsors the project,
>> >> what lic it
>> >> should have, and whether or not it should have a harmonious
>> >> sounding name.
>> >> As you know most OS projects are marketing statements with very little
>> >> unpaid community.
>> >> This one would have to be a real community driven effort, even at
>> >> ownership level.... I think.
>> >> ... worth thinking about I think ;)
>> >> I'm going to need all the help I can get... thanks
>> >
>> > OK. So, the project is to make a tiny-self-downloadable-almost-java?
>> >
>> > So, just to make sure, the TODO is like:
>> >
>> > * divide JSE in small packages
>> >
>> > * make an easily set-up server infrastructure for package hosting and
>> >  mirroring (torrent?)
>> >
>> > * tweak classloader to download packages if they are not available on
>> >  the system
>> >
>> > * make things work :)
>>
>> More or less yes... but I dont think it will be easy, possibly not
>> even doable.
>>
>>
>> I think size and speed tradeoffs, and the intelligence required will
>> make it really
>> interesting... if we get there a lot of fun.
>
> How about a bit of somewhat easier stuff?
>
> shell> java-intaller install --all-deps swing
>
> (where, 'swing' is the package name)
>
> I.e. get basic JVM, then control which packages to install by hand. No
> pain. The only weird thing is that to deliver a Java app one must
> provide it with list of dependencies. But this is rather common and
> convenient in open source world.

A JRE is already selecting what an application needs to run, and does it a 
lot better than a human.
An application actually uses much less than its "bundle".
Also as a developer you do not know what is on the users machine already....
If the last application used Swing... this application will not need to get 
it again ;)

Its a very simple concept actually... if you see the whole JRE as 100%
I think most applications on use 10%
Heavy applications 60%

But with every run, the usage drops off exponentially...

If app A  used 20% when it runs on its own.
And another app B uses 25% when it runs on its own.

Then first App run = 20%
Second App run 5%

A developer cant control that because the JRE is a learning system....

But it also means this... have you ever wondered why multimedia and video 
are not packed with Java...
Its because if it not main stream or popular... Java has a thud factor 
problem.
In a scheme like this... the JRE engine could be a 1000 gigs...
It doesnt matter, the app only uses what it needs.... and now...
USB support...
Video Editing, Streaming...
Companies that woudnt even look at Java would add in Flash players...
Medical companies could add in special Hospital stuff.... the API would be 
endless...

Java just for business is boring... this would make a Java for the world...

The PANIC Harmony sub-project would be the busiest open source project on 
the web... I think ;)
I think its a way to turn the guru's loose and let them change the world 
:)... make it a whole lot better.

So make java deliverable.... and the sun will really shine ;)

>> Java currently is a pain to deliver... can we take that away, and why
>> hasnt anyone done
>> that yet.... is wots on my mind.
>>
>> or... you got a 50k application, but dont even bother trying to send
>> it via email, or contemplate
>> the user starting it froma browser.... because there is a big lump of
>> concrete attached to it.
>> Its like making a ferrari and towing a truck... more verbosity ;)
>>
>> > Sorry for my dummy question, I am just having major difficulties
>> > reading through your verbosity level ;)
>> >
>> >> > Regards,
>> >> > Tim
>> >> >
>> >> > Johnny Kewl wrote:
>> >> >> TIm... you right too much in one topic so split...
>> >> >>
>> >> >> You know when you discovering something, its not a science, its
>> >> >> exploration, and I havent even got
>> >> >> the dev env going yet so still very low on the learning
>> >> >> curve... but this is what I'm thinking..
>> >> >>
>> >> >> The basic JRE engine must be completely plugable... dynamic loading
>> >> >> as you call it.
>> >> >> At a quick glance the really big components are things like the JIT
>> >> >> compiler,
>> >> >> The fonts, all the "base" classes and the Unicode... I think its a
>> >> >> unicode module.
>> >> >>
>> >> >> Now here is what I'm thinking... the JRE gets stripped right 
>> >> >> down...
>> >> >> So for example it looks for JIT but if it cant find it is doesnt
>> >> >> crash.
>> >> >>
>> >> >> Then instead of making users download... there is a Harmony site
>> >> >> and on this site, are all the fonts, all the classes... optional
>> >> >> UTF modules etc etc.
>> >> >>
>> >> >> The initial download is just a bootstrap... it can either be
>> >> >> downloaded or included with the software...
>> >> >> If it needs a Comic font and UTF module... it fetches it, just enuf
>> >> >> to get that application running.
>> >> >> So if the users runs a series of small applications they all very
>> >> >> quick installs, but the JRE is growing...
>> >> >> So by the time the user installs a heavy application, the JRE will
>> >> >> probably do it all.
>> >> >>
>> >> >> In this scheme there is also no concept of versioning... if a class
>> >> >> is loaded that needs a new JRE lite module
>> >> >> it will just happen.... the user is hassle free.
>> >> >>
>> >> >> So there is still a installation server somewhere.... but the user
>> >> >> doesnt even have to know about it.
>> >> >> That kind of dynamic loading means the JRE must fit together like a
>> >> >> jigsaw puzzle..
>> >> >>
>> >> >> For example the first run of an application may run without JIT,
>> >> >> but the JRE's background loader starts to pull
>> >> >> it down... the next run will be fast....
>> >> >>
>> >> >> The reason I asked about the interchangability is because if one
>> >> >> has a small engine that can get only what it has to... then that
>> >> >> gets very interesting.
>> >> >> For example, if a machine already has classpaths all over the
>> >> >> place.... and a JavaLite hits the machine.... it gets only what it
>> >> >> needs, ie it gets
>> >> >> a few core classes, maybe a few fonts, maybe its own multimedia
>> >> >> engine.... but it does not have to get anything else... it does not
>> >> >> have
>> >> >> to tell the users to setup xerces again... it see's wots on the
>> >> >> machine already and uses it... so theres the compatability
>> >> >> side... the creativity
>> >> >> side is that the Java application downloaded, may also be able to
>> >> >> suck down a native module, or custom class modules that do stuff
>> >> >> like play
>> >> >> Flash Video... now thats a JRE ;)
>> >> >>
>> >> >> So... when I get going I'm going to break Harmony into tini weenie
>> >> >> pieces.... ha ha.
>> >> >> In this model, one does not even care about classes.... its just
>> >> >> that engine that must be able to discover and use whats there, or
>> >> >> pull it from a installation server.
>> >> >> Apps have the choice of using there own JRE Lite... or the systems
>> >> >> JRE ;) but I think if that JRELite is small enuf... it will go out
>> >> >> with every application.
>> >> >> Installers will use that... for sure, it makes life very easy.
>> >> >>
>> >> >> ... so thats the idea... whether it will pan out, and the idea is
>> >> >> possible, I dont know... I cant see why not....
>> >> >>
>> >> >> Some application will be unlucky... they internationalized the
>> >> >> developer has gone mad with XML, use JPA, JMX, JWhatever... and yes
>> >> >> that
>> >> >> apps JRE will have to build itself up to 10 megs before it will
>> >> >> run... but a game using JNI and doing its own drawing will probably
>> >> >> run on a 500k JRE
>> >> >>
>> >> >> Developers will very quickly learn what make the JRE take a big
>> >> >> hit.... I think thats a good thing, all the technology is there but
>> >> >> depending on what
>> >> >> system they targeting.... they will design accordingly, possibly
>> >> >> using property files instead of XML parsing...
>> >> >>
>> >> >> So... once I get going thats my hobby for the next 4 months ;)
>> >> >> If it works... you'll have to make another SVN fork;)
>> >> >
>> >>
>> >>
>> >
>> > -- 
>> > Egor Pasko
>> >
>> >
>>
>>
>
> -- 
> Egor Pasko
>
> 


Re: JRE Lite

Posted by Egor Pasko <eg...@gmail.com>.
On the 0x3FC day of Apache Harmony Johnny Kewl wrote:
> ----- Original Message ----- 
> From: "Egor Pasko" <eg...@gmail.com>
> To: <de...@harmony.apache.org>
> Sent: Monday, March 03, 2008 10:12 AM
> Subject: Re: JRE Lite
> 
> 
> > On the 0x3FC day of Apache Harmony Johnny Kewl wrote:
> >> ----- Original Message ----- 
> >> From: "Tim Ellison" <t....@gmail.com>
> >> To: <de...@harmony.apache.org>
> >> Sent: Sunday, March 02, 2008 9:02 PM
> >> Subject: Re: JRE Lite
> >>
> >>
> >> > Your ideas sound quite reasonable to me.  I bet you are surprised
> >> > about how much code is run just to invoke main(String[]) in a Java
> >> > program, but I see your idea.
> >> >
> >> > If you get it working we'd be delighted to create you a branch!
> >>
> >> Heres to hoping it pans out, I do realize that this burger may be
> >> bigger than my bite ;)
> >> Expect a lot of questions in the beginning, if it starts to work as a
> >> rough prototype
> >> I'll yell.
> >> You would also have to consider carefully who sponsors the project,
> >> what lic it
> >> should have, and whether or not it should have a harmonious
> >> sounding name.
> >> As you know most OS projects are marketing statements with very little
> >> unpaid community.
> >> This one would have to be a real community driven effort, even at
> >> ownership level.... I think.
> >> ... worth thinking about I think ;)
> >> I'm going to need all the help I can get... thanks
> >
> > OK. So, the project is to make a tiny-self-downloadable-almost-java?
> >
> > So, just to make sure, the TODO is like:
> >
> > * divide JSE in small packages
> >
> > * make an easily set-up server infrastructure for package hosting and
> >  mirroring (torrent?)
> >
> > * tweak classloader to download packages if they are not available on
> >  the system
> >
> > * make things work :)
> 
> More or less yes... but I dont think it will be easy, possibly not
> even doable.
>
>
> I think size and speed tradeoffs, and the intelligence required will
> make it really
> interesting... if we get there a lot of fun.

How about a bit of somewhat easier stuff?

shell> java-intaller install --all-deps swing

(where, 'swing' is the package name)

I.e. get basic JVM, then control which packages to install by hand. No
pain. The only weird thing is that to deliver a Java app one must
provide it with list of dependencies. But this is rather common and
convenient in open source world.
 
> Java currently is a pain to deliver... can we take that away, and why
> hasnt anyone done
> that yet.... is wots on my mind.
> 
> or... you got a 50k application, but dont even bother trying to send
> it via email, or contemplate
> the user starting it froma browser.... because there is a big lump of
> concrete attached to it.
> Its like making a ferrari and towing a truck... more verbosity ;)
> 
> > Sorry for my dummy question, I am just having major difficulties
> > reading through your verbosity level ;)
> >
> >> > Regards,
> >> > Tim
> >> >
> >> > Johnny Kewl wrote:
> >> >> TIm... you right too much in one topic so split...
> >> >>
> >> >> You know when you discovering something, its not a science, its
> >> >> exploration, and I havent even got
> >> >> the dev env going yet so still very low on the learning
> >> >> curve... but this is what I'm thinking..
> >> >>
> >> >> The basic JRE engine must be completely plugable... dynamic loading
> >> >> as you call it.
> >> >> At a quick glance the really big components are things like the JIT
> >> >> compiler,
> >> >> The fonts, all the "base" classes and the Unicode... I think its a
> >> >> unicode module.
> >> >>
> >> >> Now here is what I'm thinking... the JRE gets stripped right down...
> >> >> So for example it looks for JIT but if it cant find it is doesnt
> >> >> crash.
> >> >>
> >> >> Then instead of making users download... there is a Harmony site
> >> >> and on this site, are all the fonts, all the classes... optional
> >> >> UTF modules etc etc.
> >> >>
> >> >> The initial download is just a bootstrap... it can either be
> >> >> downloaded or included with the software...
> >> >> If it needs a Comic font and UTF module... it fetches it, just enuf
> >> >> to get that application running.
> >> >> So if the users runs a series of small applications they all very
> >> >> quick installs, but the JRE is growing...
> >> >> So by the time the user installs a heavy application, the JRE will
> >> >> probably do it all.
> >> >>
> >> >> In this scheme there is also no concept of versioning... if a class
> >> >> is loaded that needs a new JRE lite module
> >> >> it will just happen.... the user is hassle free.
> >> >>
> >> >> So there is still a installation server somewhere.... but the user
> >> >> doesnt even have to know about it.
> >> >> That kind of dynamic loading means the JRE must fit together like a
> >> >> jigsaw puzzle..
> >> >>
> >> >> For example the first run of an application may run without JIT,
> >> >> but the JRE's background loader starts to pull
> >> >> it down... the next run will be fast....
> >> >>
> >> >> The reason I asked about the interchangability is because if one
> >> >> has a small engine that can get only what it has to... then that
> >> >> gets very interesting.
> >> >> For example, if a machine already has classpaths all over the
> >> >> place.... and a JavaLite hits the machine.... it gets only what it
> >> >> needs, ie it gets
> >> >> a few core classes, maybe a few fonts, maybe its own multimedia
> >> >> engine.... but it does not have to get anything else... it does not
> >> >> have
> >> >> to tell the users to setup xerces again... it see's wots on the
> >> >> machine already and uses it... so theres the compatability
> >> >> side... the creativity
> >> >> side is that the Java application downloaded, may also be able to
> >> >> suck down a native module, or custom class modules that do stuff
> >> >> like play
> >> >> Flash Video... now thats a JRE ;)
> >> >>
> >> >> So... when I get going I'm going to break Harmony into tini weenie
> >> >> pieces.... ha ha.
> >> >> In this model, one does not even care about classes.... its just
> >> >> that engine that must be able to discover and use whats there, or
> >> >> pull it from a installation server.
> >> >> Apps have the choice of using there own JRE Lite... or the systems
> >> >> JRE ;) but I think if that JRELite is small enuf... it will go out
> >> >> with every application.
> >> >> Installers will use that... for sure, it makes life very easy.
> >> >>
> >> >> ... so thats the idea... whether it will pan out, and the idea is
> >> >> possible, I dont know... I cant see why not....
> >> >>
> >> >> Some application will be unlucky... they internationalized the
> >> >> developer has gone mad with XML, use JPA, JMX, JWhatever... and yes
> >> >> that
> >> >> apps JRE will have to build itself up to 10 megs before it will
> >> >> run... but a game using JNI and doing its own drawing will probably
> >> >> run on a 500k JRE
> >> >>
> >> >> Developers will very quickly learn what make the JRE take a big
> >> >> hit.... I think thats a good thing, all the technology is there but
> >> >> depending on what
> >> >> system they targeting.... they will design accordingly, possibly
> >> >> using property files instead of XML parsing...
> >> >>
> >> >> So... once I get going thats my hobby for the next 4 months ;)
> >> >> If it works... you'll have to make another SVN fork;)
> >> >
> >>
> >>
> >
> > -- 
> > Egor Pasko
> >
> >
> 
> 

-- 
Egor Pasko


Re: JRE Lite

Posted by Johnny Kewl <jo...@kewlstuff.co.za>.
----- Original Message ----- 
From: "Egor Pasko" <eg...@gmail.com>
To: <de...@harmony.apache.org>
Sent: Monday, March 03, 2008 10:12 AM
Subject: Re: JRE Lite


> On the 0x3FC day of Apache Harmony Johnny Kewl wrote:
>> ----- Original Message ----- 
>> From: "Tim Ellison" <t....@gmail.com>
>> To: <de...@harmony.apache.org>
>> Sent: Sunday, March 02, 2008 9:02 PM
>> Subject: Re: JRE Lite
>>
>>
>> > Your ideas sound quite reasonable to me.  I bet you are surprised
>> > about how much code is run just to invoke main(String[]) in a Java
>> > program, but I see your idea.
>> >
>> > If you get it working we'd be delighted to create you a branch!
>>
>> Heres to hoping it pans out, I do realize that this burger may be
>> bigger than my bite ;)
>> Expect a lot of questions in the beginning, if it starts to work as a
>> rough prototype
>> I'll yell.
>> You would also have to consider carefully who sponsors the project,
>> what lic it
>> should have, and whether or not it should have a harmonious sounding 
>> name.
>> As you know most OS projects are marketing statements with very little
>> unpaid community.
>> This one would have to be a real community driven effort, even at
>> ownership level.... I think.
>> ... worth thinking about I think ;)
>> I'm going to need all the help I can get... thanks
>
> OK. So, the project is to make a tiny-self-downloadable-almost-java?
>
> So, just to make sure, the TODO is like:
>
> * divide JSE in small packages
>
> * make an easily set-up server infrastructure for package hosting and
>  mirroring (torrent?)
>
> * tweak classloader to download packages if they are not available on
>  the system
>
> * make things work :)

More or less yes... but I dont think it will be easy, possibly not even 
doable.
I think size and speed tradeoffs, and the intelligence required will make it 
really
interesting... if we get there a lot of fun.

Java currently is a pain to deliver... can we take that away, and why hasnt 
anyone done
that yet.... is wots on my mind.

or... you got a 50k application, but dont even bother trying to send it via 
email, or contemplate
the user starting it froma browser.... because there is a big lump of 
concrete attached to it.
Its like making a ferrari and towing a truck... more verbosity ;)

> Sorry for my dummy question, I am just having major difficulties
> reading through your verbosity level ;)
>
>> > Regards,
>> > Tim
>> >
>> > Johnny Kewl wrote:
>> >> TIm... you right too much in one topic so split...
>> >>
>> >> You know when you discovering something, its not a science, its
>> >> exploration, and I havent even got
>> >> the dev env going yet so still very low on the learning
>> >> curve... but this is what I'm thinking..
>> >>
>> >> The basic JRE engine must be completely plugable... dynamic loading
>> >> as you call it.
>> >> At a quick glance the really big components are things like the JIT
>> >> compiler,
>> >> The fonts, all the "base" classes and the Unicode... I think its a
>> >> unicode module.
>> >>
>> >> Now here is what I'm thinking... the JRE gets stripped right down...
>> >> So for example it looks for JIT but if it cant find it is doesnt 
>> >> crash.
>> >>
>> >> Then instead of making users download... there is a Harmony site
>> >> and on this site, are all the fonts, all the classes... optional
>> >> UTF modules etc etc.
>> >>
>> >> The initial download is just a bootstrap... it can either be
>> >> downloaded or included with the software...
>> >> If it needs a Comic font and UTF module... it fetches it, just enuf
>> >> to get that application running.
>> >> So if the users runs a series of small applications they all very
>> >> quick installs, but the JRE is growing...
>> >> So by the time the user installs a heavy application, the JRE will
>> >> probably do it all.
>> >>
>> >> In this scheme there is also no concept of versioning... if a class
>> >> is loaded that needs a new JRE lite module
>> >> it will just happen.... the user is hassle free.
>> >>
>> >> So there is still a installation server somewhere.... but the user
>> >> doesnt even have to know about it.
>> >> That kind of dynamic loading means the JRE must fit together like a
>> >> jigsaw puzzle..
>> >>
>> >> For example the first run of an application may run without JIT,
>> >> but the JRE's background loader starts to pull
>> >> it down... the next run will be fast....
>> >>
>> >> The reason I asked about the interchangability is because if one
>> >> has a small engine that can get only what it has to... then that
>> >> gets very interesting.
>> >> For example, if a machine already has classpaths all over the
>> >> place.... and a JavaLite hits the machine.... it gets only what it
>> >> needs, ie it gets
>> >> a few core classes, maybe a few fonts, maybe its own multimedia
>> >> engine.... but it does not have to get anything else... it does not
>> >> have
>> >> to tell the users to setup xerces again... it see's wots on the
>> >> machine already and uses it... so theres the compatability
>> >> side... the creativity
>> >> side is that the Java application downloaded, may also be able to
>> >> suck down a native module, or custom class modules that do stuff
>> >> like play
>> >> Flash Video... now thats a JRE ;)
>> >>
>> >> So... when I get going I'm going to break Harmony into tini weenie
>> >> pieces.... ha ha.
>> >> In this model, one does not even care about classes.... its just
>> >> that engine that must be able to discover and use whats there, or
>> >> pull it from a installation server.
>> >> Apps have the choice of using there own JRE Lite... or the systems
>> >> JRE ;) but I think if that JRELite is small enuf... it will go out
>> >> with every application.
>> >> Installers will use that... for sure, it makes life very easy.
>> >>
>> >> ... so thats the idea... whether it will pan out, and the idea is
>> >> possible, I dont know... I cant see why not....
>> >>
>> >> Some application will be unlucky... they internationalized the
>> >> developer has gone mad with XML, use JPA, JMX, JWhatever... and yes
>> >> that
>> >> apps JRE will have to build itself up to 10 megs before it will
>> >> run... but a game using JNI and doing its own drawing will probably
>> >> run on a 500k JRE
>> >>
>> >> Developers will very quickly learn what make the JRE take a big
>> >> hit.... I think thats a good thing, all the technology is there but
>> >> depending on what
>> >> system they targeting.... they will design accordingly, possibly
>> >> using property files instead of XML parsing...
>> >>
>> >> So... once I get going thats my hobby for the next 4 months ;)
>> >> If it works... you'll have to make another SVN fork;)
>> >
>>
>>
>
> -- 
> Egor Pasko
>
> 


Re: JRE Lite

Posted by Johnny Kewl <jo...@kewlstuff.co.za>.
---- Original Message ----- 
From: "Egor Pasko" <eg...@gmail.com>
To: <de...@harmony.apache.org>
Sent: Monday, March 03, 2008 10:12 AM
Subject: Re: JRE Lite


> On the 0x3FC day of Apache Harmony Johnny Kewl wrote:
>> ----- Original Message ----- 
>> From: "Tim Ellison" <t....@gmail.com>
>> To: <de...@harmony.apache.org>
>> Sent: Sunday, March 02, 2008 9:02 PM
>> Subject: Re: JRE Lite
>>
>>
>> > Your ideas sound quite reasonable to me.  I bet you are surprised
>> > about how much code is run just to invoke main(String[]) in a Java
>> > program, but I see your idea.
>> >
>> > If you get it working we'd be delighted to create you a branch!
>>
>> Heres to hoping it pans out, I do realize that this burger may be
>> bigger than my bite ;)
>> Expect a lot of questions in the beginning, if it starts to work as a
>> rough prototype
>> I'll yell.
>> You would also have to consider carefully who sponsors the project,
>> what lic it
>> should have, and whether or not it should have a harmonious sounding 
>> name.
>> As you know most OS projects are marketing statements with very little
>> unpaid community.
>> This one would have to be a real community driven effort, even at
>> ownership level.... I think.
>> ... worth thinking about I think ;)
>> I'm going to need all the help I can get... thanks
>
> OK. So, the project is to make a tiny-self-downloadable-almost-java?
>
> So, just to make sure, the TODO is like:
>
> * divide JSE in small packages
>
> * make an easily set-up server infrastructure for package hosting and
>  mirroring (torrent?)
>
> * tweak classloader to download packages if they are not available on
>  the system
>
> * make things work :)
>
> Sorry for my dummy question, I am just having major difficulties
> reading through your verbosity level ;)

It the "brains" of the thing that will be interesting....
Fonts are huge, so we stick them on a server...
The base classes are huge, so we stick them on a server
etc etc

Now there is just a Java Lite... and the application... they small and 
something (installer) put
them on the machine and said.... Exec(JavaLite App.Jar)

Now those "brains" kick in... the app is running and it needs a Font... the 
engine doesnt crash
it just quietly gets it.
The class running needs a List... the engine detects it and quietly gets 
it...

Net effect (50k app + 500k engine + at runtime 300k of download).... much 
better
than a 25 meg package that the user would have to install.

Thats the idea... but if it turns out that (50k application + 10m engine + 
at runtime 5 meg)
its probably bust....

What will it be... how can it be engineered to be deliverable... nice 
questions.
Also much more fun that just applying someone elses rule book all the 
time.... a chance to
make a very special JRE... and if it works, that it will be... most 
definitely.
A good name for it would be PANIC!  I like that... ;)

An then the final part is this... if it is lite and can deliver stuff in a 
very intelligent way... then
what about delivering stuff the Java sucks at now as well... like USB 
support would be really cool
and .... anything else the imagination allows for...

But... we want to engineer a TRICKLE.... not a TORRENT  ;)

> > Regards,
>> > Tim
>> >
>> > Johnny Kewl wrote:
>> >> TIm... you right too much in one topic so split...
>> >>
>> >> You know when you discovering something, its not a science, its
>> >> exploration, and I havent even got
>> >> the dev env going yet so still very low on the learning
>> >> curve... but this is what I'm thinking..
>> >>
>> >> The basic JRE engine must be completely plugable... dynamic loading
>> >> as you call it.
>> >> At a quick glance the really big components are things like the JIT
>> >> compiler,
>> >> The fonts, all the "base" classes and the Unicode... I think its a
>> >> unicode module.
>> >>
>> >> Now here is what I'm thinking... the JRE gets stripped right down...
>> >> So for example it looks for JIT but if it cant find it is doesnt 
>> >> crash.
>> >>
>> >> Then instead of making users download... there is a Harmony site
>> >> and on this site, are all the fonts, all the classes... optional
>> >> UTF modules etc etc.
>> >>
>> >> The initial download is just a bootstrap... it can either be
>> >> downloaded or included with the software...
>> >> If it needs a Comic font and UTF module... it fetches it, just enuf
>> >> to get that application running.
>> >> So if the users runs a series of small applications they all very
>> >> quick installs, but the JRE is growing...
>> >> So by the time the user installs a heavy application, the JRE will
>> >> probably do it all.
>> >>
>> >> In this scheme there is also no concept of versioning... if a class
>> >> is loaded that needs a new JRE lite module
>> >> it will just happen.... the user is hassle free.
>> >>
>> >> So there is still a installation server somewhere.... but the user
>> >> doesnt even have to know about it.
>> >> That kind of dynamic loading means the JRE must fit together like a
>> >> jigsaw puzzle..
>> >>
>> >> For example the first run of an application may run without JIT,
>> >> but the JRE's background loader starts to pull
>> >> it down... the next run will be fast....
>> >>
>> >> The reason I asked about the interchangability is because if one
>> >> has a small engine that can get only what it has to... then that
>> >> gets very interesting.
>> >> For example, if a machine already has classpaths all over the
>> >> place.... and a JavaLite hits the machine.... it gets only what it
>> >> needs, ie it gets
>> >> a few core classes, maybe a few fonts, maybe its own multimedia
>> >> engine.... but it does not have to get anything else... it does not
>> >> have
>> >> to tell the users to setup xerces again... it see's wots on the
>> >> machine already and uses it... so theres the compatability
>> >> side... the creativity
>> >> side is that the Java application downloaded, may also be able to
>> >> suck down a native module, or custom class modules that do stuff
>> >> like play
>> >> Flash Video... now thats a JRE ;)
>> >>
>> >> So... when I get going I'm going to break Harmony into tini weenie
>> >> pieces.... ha ha.
>> >> In this model, one does not even care about classes.... its just
>> >> that engine that must be able to discover and use whats there, or
>> >> pull it from a installation server.
>> >> Apps have the choice of using there own JRE Lite... or the systems
>> >> JRE ;) but I think if that JRELite is small enuf... it will go out
>> >> with every application.
>> >> Installers will use that... for sure, it makes life very easy.
>> >>
>> >> ... so thats the idea... whether it will pan out, and the idea is
>> >> possible, I dont know... I cant see why not....
>> >>
>> >> Some application will be unlucky... they internationalized the
>> >> developer has gone mad with XML, use JPA, JMX, JWhatever... and yes
>> >> that
>> >> apps JRE will have to build itself up to 10 megs before it will
>> >> run... but a game using JNI and doing its own drawing will probably
>> >> run on a 500k JRE
>> >>
>> >> Developers will very quickly learn what make the JRE take a big
>> >> hit.... I think thats a good thing, all the technology is there but
>> >> depending on what
>> >> system they targeting.... they will design accordingly, possibly
>> >> using property files instead of XML parsing...
>> >>
>> >> So... once I get going thats my hobby for the next 4 months ;)
>> >> If it works... you'll have to make another SVN fork;)
>> >
>>
>>
>
> -- 
> Egor Pasko
>
> 


Re: JRE Lite

Posted by Egor Pasko <eg...@gmail.com>.
On the 0x3FC day of Apache Harmony Johnny Kewl wrote:
> ----- Original Message ----- 
> From: "Tim Ellison" <t....@gmail.com>
> To: <de...@harmony.apache.org>
> Sent: Sunday, March 02, 2008 9:02 PM
> Subject: Re: JRE Lite
> 
> 
> > Your ideas sound quite reasonable to me.  I bet you are surprised
> > about how much code is run just to invoke main(String[]) in a Java
> > program, but I see your idea.
> >
> > If you get it working we'd be delighted to create you a branch!
> 
> Heres to hoping it pans out, I do realize that this burger may be
> bigger than my bite ;)
> Expect a lot of questions in the beginning, if it starts to work as a
> rough prototype
> I'll yell.
> You would also have to consider carefully who sponsors the project,
> what lic it
> should have, and whether or not it should have a harmonious sounding name.
> As you know most OS projects are marketing statements with very little
> unpaid community.
> This one would have to be a real community driven effort, even at
> ownership level.... I think.
> ... worth thinking about I think ;)
> I'm going to need all the help I can get... thanks

OK. So, the project is to make a tiny-self-downloadable-almost-java?

So, just to make sure, the TODO is like:

* divide JSE in small packages

* make an easily set-up server infrastructure for package hosting and
  mirroring (torrent?)

* tweak classloader to download packages if they are not available on
  the system

* make things work :)

Sorry for my dummy question, I am just having major difficulties
reading through your verbosity level ;)

> > Regards,
> > Tim
> >
> > Johnny Kewl wrote:
> >> TIm... you right too much in one topic so split...
> >>
> >> You know when you discovering something, its not a science, its
> >> exploration, and I havent even got
> >> the dev env going yet so still very low on the learning
> >> curve... but this is what I'm thinking..
> >>
> >> The basic JRE engine must be completely plugable... dynamic loading
> >> as you call it.
> >> At a quick glance the really big components are things like the JIT
> >> compiler,
> >> The fonts, all the "base" classes and the Unicode... I think its a
> >> unicode module.
> >>
> >> Now here is what I'm thinking... the JRE gets stripped right down...
> >> So for example it looks for JIT but if it cant find it is doesnt crash.
> >>
> >> Then instead of making users download... there is a Harmony site
> >> and on this site, are all the fonts, all the classes... optional
> >> UTF modules etc etc.
> >>
> >> The initial download is just a bootstrap... it can either be
> >> downloaded or included with the software...
> >> If it needs a Comic font and UTF module... it fetches it, just enuf
> >> to get that application running.
> >> So if the users runs a series of small applications they all very
> >> quick installs, but the JRE is growing...
> >> So by the time the user installs a heavy application, the JRE will
> >> probably do it all.
> >>
> >> In this scheme there is also no concept of versioning... if a class
> >> is loaded that needs a new JRE lite module
> >> it will just happen.... the user is hassle free.
> >>
> >> So there is still a installation server somewhere.... but the user
> >> doesnt even have to know about it.
> >> That kind of dynamic loading means the JRE must fit together like a
> >> jigsaw puzzle..
> >>
> >> For example the first run of an application may run without JIT,
> >> but the JRE's background loader starts to pull
> >> it down... the next run will be fast....
> >>
> >> The reason I asked about the interchangability is because if one
> >> has a small engine that can get only what it has to... then that
> >> gets very interesting.
> >> For example, if a machine already has classpaths all over the
> >> place.... and a JavaLite hits the machine.... it gets only what it
> >> needs, ie it gets
> >> a few core classes, maybe a few fonts, maybe its own multimedia
> >> engine.... but it does not have to get anything else... it does not
> >> have
> >> to tell the users to setup xerces again... it see's wots on the
> >> machine already and uses it... so theres the compatability
> >> side... the creativity
> >> side is that the Java application downloaded, may also be able to
> >> suck down a native module, or custom class modules that do stuff
> >> like play
> >> Flash Video... now thats a JRE ;)
> >>
> >> So... when I get going I'm going to break Harmony into tini weenie
> >> pieces.... ha ha.
> >> In this model, one does not even care about classes.... its just
> >> that engine that must be able to discover and use whats there, or
> >> pull it from a installation server.
> >> Apps have the choice of using there own JRE Lite... or the systems
> >> JRE ;) but I think if that JRELite is small enuf... it will go out
> >> with every application.
> >> Installers will use that... for sure, it makes life very easy.
> >>
> >> ... so thats the idea... whether it will pan out, and the idea is
> >> possible, I dont know... I cant see why not....
> >>
> >> Some application will be unlucky... they internationalized the
> >> developer has gone mad with XML, use JPA, JMX, JWhatever... and yes
> >> that
> >> apps JRE will have to build itself up to 10 megs before it will
> >> run... but a game using JNI and doing its own drawing will probably
> >> run on a 500k JRE
> >>
> >> Developers will very quickly learn what make the JRE take a big
> >> hit.... I think thats a good thing, all the technology is there but
> >> depending on what
> >> system they targeting.... they will design accordingly, possibly
> >> using property files instead of XML parsing...
> >>
> >> So... once I get going thats my hobby for the next 4 months ;)
> >> If it works... you'll have to make another SVN fork;)
> >
> 
> 

-- 
Egor Pasko


Re: JRE Lite

Posted by Johnny Kewl <jo...@kewlstuff.co.za>.
----- Original Message ----- 
From: "Tim Ellison" <t....@gmail.com>
To: <de...@harmony.apache.org>
Sent: Sunday, March 02, 2008 9:02 PM
Subject: Re: JRE Lite


> Your ideas sound quite reasonable to me.  I bet you are surprised about 
> how much code is run just to invoke main(String[]) in a Java program, but 
> I see your idea.
>
> If you get it working we'd be delighted to create you a branch!

Heres to hoping it pans out, I do realize that this burger may be bigger 
than my bite ;)
Expect a lot of questions in the beginning, if it starts to work as a rough 
prototype
I'll yell.
You would also have to consider carefully who sponsors the project, what lic 
it
should have, and whether or not it should have a harmonious sounding name.
As you know most OS projects are marketing statements with very little 
unpaid community.
This one would have to be a real community driven effort, even at ownership 
level.... I think.
... worth thinking about I think ;)
I'm going to need all the help I can get... thanks

> Regards,
> Tim
>
> Johnny Kewl wrote:
>> TIm... you right too much in one topic so split...
>>
>> You know when you discovering something, its not a science, its 
>> exploration, and I havent even got
>> the dev env going yet so still very low on the learning curve... but this 
>> is what I'm thinking..
>>
>> The basic JRE engine must be completely plugable... dynamic loading as 
>> you call it.
>> At a quick glance the really big components are things like the JIT 
>> compiler,
>> The fonts, all the "base" classes and the Unicode... I think its a 
>> unicode module.
>>
>> Now here is what I'm thinking... the JRE gets stripped right down...
>> So for example it looks for JIT but if it cant find it is doesnt crash.
>>
>> Then instead of making users download... there is a Harmony site and on 
>> this site, are all the fonts, all the classes... optional UTF modules etc 
>> etc.
>>
>> The initial download is just a bootstrap... it can either be downloaded 
>> or included with the software...
>> If it needs a Comic font and UTF module... it fetches it, just enuf to 
>> get that application running.
>> So if the users runs a series of small applications they all very quick 
>> installs, but the JRE is growing...
>> So by the time the user installs a heavy application, the JRE will 
>> probably do it all.
>>
>> In this scheme there is also no concept of versioning... if a class is 
>> loaded that needs a new JRE lite module
>> it will just happen.... the user is hassle free.
>>
>> So there is still a installation server somewhere.... but the user doesnt 
>> even have to know about it.
>> That kind of dynamic loading means the JRE must fit together like a 
>> jigsaw puzzle..
>>
>> For example the first run of an application may run without JIT, but the 
>> JRE's background loader starts to pull
>> it down... the next run will be fast....
>>
>> The reason I asked about the interchangability is because if one has a 
>> small engine that can get only what it has to... then that gets very 
>> interesting.
>> For example, if a machine already has classpaths all over the place.... 
>> and a JavaLite hits the machine.... it gets only what it needs, ie it 
>> gets
>> a few core classes, maybe a few fonts, maybe its own multimedia 
>> engine.... but it does not have to get anything else... it does not have
>> to tell the users to setup xerces again... it see's wots on the machine 
>> already and uses it... so theres the compatability side... the creativity
>> side is that the Java application downloaded, may also be able to suck 
>> down a native module, or custom class modules that do stuff like play
>> Flash Video... now thats a JRE ;)
>>
>> So... when I get going I'm going to break Harmony into tini weenie 
>> pieces.... ha ha.
>> In this model, one does not even care about classes.... its just that 
>> engine that must be able to discover and use whats there, or pull it from 
>> a installation server.
>> Apps have the choice of using there own JRE Lite... or the systems JRE ;) 
>> but I think if that JRELite is small enuf... it will go out with every 
>> application.
>> Installers will use that... for sure, it makes life very easy.
>>
>> ... so thats the idea... whether it will pan out, and the idea is 
>> possible, I dont know... I cant see why not....
>>
>> Some application will be unlucky... they internationalized the developer 
>> has gone mad with XML, use JPA, JMX, JWhatever... and yes that
>> apps JRE will have to build itself up to 10 megs before it will run... 
>> but a game using JNI and doing its own drawing will probably run on a 
>> 500k JRE
>>
>> Developers will very quickly learn what make the JRE take a big hit.... I 
>> think thats a good thing, all the technology is there but depending on 
>> what
>> system they targeting.... they will design accordingly, possibly using 
>> property files instead of XML parsing...
>>
>> So... once I get going thats my hobby for the next 4 months ;)
>> If it works... you'll have to make another SVN fork;)
> 


Re: JRE Lite

Posted by Tim Ellison <t....@gmail.com>.
Your ideas sound quite reasonable to me.  I bet you are surprised about 
how much code is run just to invoke main(String[]) in a Java program, 
but I see your idea.

If you get it working we'd be delighted to create you a branch!

Regards,
Tim

Johnny Kewl wrote:
> TIm... you right too much in one topic so split...
> 
> You know when you discovering something, its not a science, its exploration, and I havent even got
> the dev env going yet so still very low on the learning curve... but this is what I'm thinking..
> 
> The basic JRE engine must be completely plugable... dynamic loading as you call it.
> At a quick glance the really big components are things like the JIT compiler,
> The fonts, all the "base" classes and the Unicode... I think its a unicode module.
> 
> Now here is what I'm thinking... the JRE gets stripped right down...
> So for example it looks for JIT but if it cant find it is doesnt crash.
> 
> Then instead of making users download... there is a Harmony site and on this site, are all the fonts, all the classes... optional UTF modules etc etc.
> 
> The initial download is just a bootstrap... it can either be downloaded or included with the software...
> If it needs a Comic font and UTF module... it fetches it, just enuf to get that application running.
> So if the users runs a series of small applications they all very quick installs, but the JRE is growing...
> So by the time the user installs a heavy application, the JRE will probably do it all.
> 
> In this scheme there is also no concept of versioning... if a class is loaded that needs a new JRE lite module
> it will just happen.... the user is hassle free.
> 
> So there is still a installation server somewhere.... but the user doesnt even have to know about it.
> That kind of dynamic loading means the JRE must fit together like a jigsaw puzzle..
> 
> For example the first run of an application may run without JIT, but the JRE's background loader starts to pull
> it down... the next run will be fast....
> 
> The reason I asked about the interchangability is because if one has a small engine that can get only what it has to... then that gets very interesting.
> For example, if a machine already has classpaths all over the place.... and a JavaLite hits the machine.... it gets only what it needs, ie it gets
> a few core classes, maybe a few fonts, maybe its own multimedia engine.... but it does not have to get anything else... it does not have
> to tell the users to setup xerces again... it see's wots on the machine already and uses it... so theres the compatability side... the creativity
> side is that the Java application downloaded, may also be able to suck down a native module, or custom class modules that do stuff like play
> Flash Video... now thats a JRE ;)
> 
> So... when I get going I'm going to break Harmony into tini weenie pieces.... ha ha.
> In this model, one does not even care about classes.... its just that engine that must be able to discover and use whats there, or pull it from a installation server.
> Apps have the choice of using there own JRE Lite... or the systems JRE ;) but I think if that JRELite is small enuf... it will go out with every application.
> Installers will use that... for sure, it makes life very easy.
> 
> ... so thats the idea... whether it will pan out, and the idea is possible, I dont know... I cant see why not....
> 
> Some application will be unlucky... they internationalized the developer has gone mad with XML, use JPA, JMX, JWhatever... and yes that
> apps JRE will have to build itself up to 10 megs before it will run... but a game using JNI and doing its own drawing will probably run on a 500k JRE
> 
> Developers will very quickly learn what make the JRE take a big hit.... I think thats a good thing, all the technology is there but depending on what
> system they targeting.... they will design accordingly, possibly using property files instead of XML parsing...
> 
> So... once I get going thats my hobby for the next 4 months ;)
> If it works... you'll have to make another SVN fork;)