Starting a persomnal Wiki page

Okay.

Some of you may havbe noticed that I am starting to get a bit testy about having to counter the same old myths and misconceptions people often arrive here with. I’ve been doing it for 5 years in various forums, it starts to get old.

ERGO I am starting a personal Wiki page on the Wiki with my personal FAQ on it. I am going to try to oppulate it with reasonably detailed answers to all these silly thing so I can just tell folks who show up with these ideas in their head “go read here.”

I’ll add to it as I find more. Right now its definitely in initial development but if anyone wants to take a look, here it is:

http://wiki.java.net/bin/view/Games/JeffFAQ

Great start to the WIki - and a great topic to start with.

I am sure there are lots of nuggets that appear on this board that will make good additions to it.

I’ve done my part by posting the FAQ at Beyond3D. :slight_smile:
Wonderful work Jeff.

Hopefully people will actually read and understand what’s written.

You are growing it very fast - You should put a link to the Wiki in your sig or something so it gets visibility.

Cool. Thnaks for the plug and Im glad this little project is already proving useful 8)

Heh, I have whole back log of "things about Java and games I really dont want to have to explain in an another argument yet again " :wink:

Good idea on the sig. Come momday I am slo going to link it from my Sun Labs wiki page and the Sun Internal page I maintain on game technologies.

Both of those though I need to do from my desk at work.

(Just testing the .sig)

Great and Welcome initiative !

You may want to consider providing a sticky for the link in the Clubies and Performance Tuning forums too.

Why wait that long… ? ;D

Slightly miffed, I spent a fair bit of time trying organsie what was on the community FAQ a while ago. Is there any reason you couldn’t have just added your answers/questions/comments/opinions to that one?

Then we would have ended up with a central source of information from everyone for everyone.

That aside, the information on the your new page is very useful stuff, doubly so for the performance stuff.

Kev

To tell you the truth Kev… I felt the general FAQ was a community thing and I didn’t want to have to debate/justify each point to the community.

These are the things I believe and tell folks. Its purpose is to keep me from being obnoxious just because Im feeling miffed that I have to reiterate it Yet Again™.

If you want to move the llink point to someplace more appropriate in your eyes thats cool with me, it was just the most sensible place I could see…

Just added an extra poitn in the performance section bae on my reading the Beyond3D comments…

“Why is Java a late bound language?”

you forgot to add the code snippet in your little game gem :slight_smile:

DP

heh was still debugging it 8)

Its fully tested and up now.

Well there is some good stuff in those pages, here is my constructive criticism…

You might want to add some bits of information that are more up to date about J2ME since most of the stuff you talk about is 2-3year old (you PC people are still stuck in PC time, things move faster in Cell time :wink: ), there is no mention to CLDC Hotspot (that is the VM that is coming out in phones today i.e. Nokia S60 platform, etc…), you always talk about memory problems (what kind of memory ?!? Heap Size Yes, Storage NO), many phones coming out NOW have more than 64Mb+ (this varies allot from low-to high end phones), my own day to day phone that i have been using for more than a year now has 41MB of Shared memory and Max JAR Size: Unlimited (but depending on available storage), many also support memory sticks (2Gb), etc… the real problems is that networks are very slow even 3G networks so download size is a big problem not JAR size or Memory Size in general (you should be more specific).

Also you don’t mention Mobile GPUs (OpenGL ES, JSR184, JSR239) you make it sound like J2ME is so limited that it can’t do anything good, and it can in a much easier way than BREW, and that is even worse than what Carmack said about J2ME and not J2SE, he is right in many things (especially about the Hardware/Performance of cell phones compared to GBA) and he is only talking about J2ME, not java in general (you make it sound like he is judging the Java platform in general) i think that is pretty clear on his blog entry, but for a person that is used to code at the lowest level and have total control of Hardware it is obvious that this environment is not for people like Carmack, also with JSR184 (and possibly JSR239 that is in fact a big mistake overlapping JSR184, but might make the PC->Phone transition easier for OpenGL people like Carmack and many others) it can do 3D in a way that GBA can’t, and with Hardware Accelerated JSR184 it will be able to do stuff that is of Desktop/Console quality (within a fixed graphics pipeline way for the moment there are already programmable graphics pipelines for mobile devices, like PowerVR SGX and GoForce 3D but i have yet to see any in action in a cell phone)

You don’t talk about real stuff (just theory) like Manufactures platforms and Hardware differences (Memory Speed, BUS speeds, etc… are very slow and very different, there is no real Mobile platform, but several Manufacture custom platforms, that require allot of knowledge of the underlying hardware and API layer (supported JSRs, etc…) to not only squeeze performance but sometimes to make midlets (apps) work properly.

You will better off referring people to the http://java.sun.com/products/cldc/wp/CLDC_HI_WhitePaper.pdf (many number in this paper are also outdated this is Cell time so things are a bit more dynamic and less predictable than in the PC space) and other sources of information about J2ME, what you posted only adds to the confusion, is outdated and incomplete and actually hurts the J2ME community.

I program in both Java(J2ME) and BREW and i much prefer the first option, but i know it’s limits (of the “J2ME platform”) and shortcomings (you and most of the people here don’t admit that it or the java platform for that matter has shortcomings that’s just SAD), just because I am not a Fan boy does not make me wrong, this is just my humble opinion (this is a forum it is meant for people to have different opinions and discuss them in the manner they choose, I always try not to be impolite, if you don’t agree simply say so but don’t accuse me of not wanting to learn I am always trying to learn, do you have something to teach (I think so I have learned a couple of stuff from your posts but not about J2ME)? But more important are you willing to learn?

I am an open minded person always willing to learn, on the other hand i am not an English Native so at times my posts can be confusing and in need of clarification, so don’t jump to the guns and be patient (“Patience is a high virtue”, since you like quotes so much).

CLDC Hotspot is the marketing name for the latest generation of CVM.

I have no information that it is going to be any better then 85% - 90% the speed of Hotspot. If you have a pointer that says anything else, I’d be interested in seeing it.

True but developers have to target the lions-share of the market. The target phones are still much smaller. This is why I talk about such phones as “next egenration.” They may be available now but they are not yet the target market. Furthermore, the primary audiance of my peice are people using their phones and seeing a slow Java. I am explaining to them why that is what they see and why it is not represetative of Java anywhere but on those phones.

The networks are also promised to improve but you are right that is stil in the “coming soon” phase. Unlike the phoenes though there won’t be as much of a lag getting it into people’s hands so long as theya re abckward compatible with the existing handsets.

It is however otuside the bounds of the subject I was talking about-- which is why the VMs are the way they are on cell phones.

As a seperate topic of “what are the impediments to online games on the mobile handset” it absolutely has merit as an issue,

Again I am talking about the VMs. This is outside the scope of VM performance.

I also frankly don’t buy the argument that “with a good GPU VM performance doesn’t matter.” If that were true then the next generation consoles ( and modern PCs) would all have very low cost low power CPUS-- but they don’t. The CPU keeps on expanding its power along with the GPU and game devleopers always find ways to use that power. Once upon a time they used it for graphcis rendering. Now they use it for complex AI and physics.

The cell phone will always seem slow running games if it does not follow the same growth curve. Thats the reality. The desktop and the console teach gamers what to expect and those expectatiosn continue to grow.

Now it IS true that a generation or two down the line, at least according to the handset makers, they WILL catch up with the hand held consoles in hardware. At the point that is the norm in people’s hands we should be able to run desktop type VMs on them and then things should really fly.

Throughout his blog he says “Java” NOT "J2ME/CLDC. Many many people think he is talking about Java in general. Either he thinks he is talking about Java in general, or he writes very badly. Take your pick, I don’t really care which it is-- it needs to be put into proper perspective which is what I do.

[quote]but for a person that is used to code at the lowest level and have total control of Hardware it is obvious that this environment is not for people like Carmack,
[/quote]
I think YOU do him a disservice now. Three years ago at Quake con (I was there) a prime point of his speach was “low level bit twiddlign is dead.” He made it very celar that he believed that, as the hardware took over more and more functionality, higher level tools were going to become the preferred norm.

I talk about the VMS. What they are, how they work, and why. That is the point of the whole peice. If you missed that then you missed the point.

Thsi is all outside of the issue of Java VM performance, which again was the issue at hand,

You will note the topic WASNT “whats wrong with J2ME’”…

[quote] what you posted only adds to the confusion, is outdated and incomplete and actually hurts the J2ME community.
[/quote]
What I posted is to my (inside Sun) knowledge 100% factual, accurate, and conforms to the Sun official statements on these topics.

If you have a specific reference that shows that anything is actually factually incorrect please present it clearly and how it relates to the point you are critquing and I will have a look at it…

What I have heard i nall this so far in my mind comes down to two things:

(1) “You aren’t spouting the future-vision kool-aid” and you are right, I’m not. Im talking about what people are experiencing on their phones today and why.

and

(2) “You arent talking about my issues” and again you are right, I am adressing very specific issues I feel I need to address. If you want to address these other issues I suggest you get yourself a web page and do so.

P.S. By the way… you seem to be very worried about the perception of the Java phone. Honestly, I’m not. I am far more worried about what users’ real experiences with the phone are doing to the perception of Java. I can’t make the phone experience better but I CAN help people to understand that they shouldn’t dismiss Java just because of what they see on their phone today.

I had a long discussion with a number of folks on the Solaris team regarding Java performance where I showed them how every reason they thought Java was slow was based on a myth or an error. You know what their final comment was, “Well, the only Java I ever see is on my phone and it takes forever to do anything.” Thats the real danger, AFAIAC.

P.S. My impression, for what its worth, is that you have absorbed a fair bit of marketing ‘spin’ and confused it with technical information. Its an understandable mistake to make but if you release your stranglehold on that marketing as “fact” you might widen your technical understanding.

Ah, yes! Of course, that old chestnut: the only country in the world that matters is the USA. Sorry, but here in mobile-phone-land (UK + Europe) 32Mb or more is the norm, not the exception. You just need to go out for a walk, and everyone you see will have a k700i or better. Often much better.

There are 2 VMs targeted to mobile devices: CDC Hotspot (formerly CVM) and CLDC Hotspot (formerly Mounty) they are not the same, In my opinion you should change CVM to CDC Hotspot since it is the name that pops up the most (on Sun and also on Developers web sites) and that people (me included are more familiar with), and i believe that has been dropped according to this FAQ: http://java.sun.com/products/cdc/faq.html CVM is outdated you should instead use CDC Hotspot, Also you should mention CLDC Hotspot since it is more relevant than KVM these days.

The biggest difference that i see is that one supports 16Bit processors (CLDC Hotspot) and the other does not (CDC Hotspot ->32bit).

Also i must also update myself there is a revision of the CLDC Hotspot WP: http://java.sun.com/j2me/docs/pdf/CLDC-HI_whitepaper-February_2005.pdf

Also it should be made clear that: “that the CLDC and CDC specifications do not require the use of the KVM or the CVM, only the use of a VM that adheres to the requirements of the specification in question. While many device manufacturers license the KVM or CVM from Sun Microsystems to serve as the core of their J2ME implementation, they are not required for J2ME compliance. It is a mistake, therefore, to consider the CLDC and KVM as synonymous, and similarly for the CDC and the CVM.”, I don’t think it is clear on your Wiki pages.

BTW, I don’t know where those 85-90% come from? The only thing that i know and care about KVM vs CLDC Hotspot is that it is significantly faster, according to a more recent whitepaper:
“The execution speed of optimized native code can be up to 50 times faster than the speed of a conventional interpreter. When run in mixed mode (using the adaptive compiler to optimize the frequently used operations and using the optimized bytecode interpreter for infrequently used code), the CLDC HotSpot Implementation system can achieve a performance advantage of approximately 8 to 10 times when compared to traditional bytecode interpreters.”

BTW: I have a question since you are inside SUN and have access to the relevant information and people, is the CLDC Hotspot just a trimmed down Version of the CDC Hotspot or is it the other way around? Is CDC a pumped up CLDC HotSpot? Are they based on the same source code?

Well that depends on your market target I for instance am targeting JSR184 enabled phones and most phones with 3D capabilities have already pretty good memory capabilities(but that is another story, another time), this is a very dynamic topic and vary allot, you should mention that java phone performance varies allot from phone to phone and explain the causes (memory heap size and memory speed being part of the problem), that would make for better enlighten people, and explain that not all java phones are slow, this way you will not perpetuate yet another myth that java phones are slow.

Not only would it be valid for that topic but also to explain why the typical Java Game is 250K or less.

Well i did not make that argument “with a good GPU VM performance doesn’t matter”, I only mention GPUs because it is one of the things that can make java games depend less on VM speed and have better looking games (shaders, etc…) that is comparable to games being played on the Gizmo and PSP consoles, but until the networks get fast this also is an issue for J2ME, better looking games usually mean bigger file sizes.

But i agree with you, it also means that the CPU will be available to do more complex physics and AI, this way we wont have to scale down the desktop/console physics to use in mobile devices (this is what happens now, wend physics is ported it is simplified).

BTW, i have already played 3D games that are up to par in terms of performance and graphics to some of the best handheld consoles (Nintendo DS, still not PSP level but close).

People that jump to that conclusion just read the Big Print and not the article, i have read the article and it is pretty clear that he is talking about J2ME which is part of the Java ecosystem, but you put it in good perspective highlighting just that and that is a good thing :slight_smile:

Probably so, but i am not a Carmack Fan, on the other hand I think he was referring to the Desktop and (less so to the Console) arenas, in mobile devices it is unfortunately tweak-a-hoi time and will be for some time (i hope for a small amount of time) :stuck_out_tongue:

Continued…

No i just wish you expanded more, talked about the “platform” that would be a better article and would add value to stuff that is answered in FAQs, this way you would not simply be repeating for your own words info that is already documented in the FAQs, i understand that this was not your goal i am only expressing a wish :slight_smile:

Well, Hardware also affects the VM performance, VM performance can vary immensely in phones form the same manufacture (even from the same series/platform) because of hardware diffs, so i don’t think this it is totally out of order mentioning that hardware differences in phones affect VM performance.

I never said they wore incorrect, just outdated and incomplete…
Well those words wore a bit harsh (my words not yours), but i already mention that you used outdated terms (you should use the current terminology: CDC Hotspot, and CLDC Hotspot, and probably add that it isn’t necessary to use any of those machines, that manufacturers and others (can create there own VMs), also add some information comparing KVM to CLDC Hotspot and why it is faster (compiled code vs interpreted code), more than that you should also add information about performance diffs in Java Phones and the factors that dictate that performance (stuff i talked about earlier) and while you are at it add that: Not all Java phones are slow!

Also it is not necessarily true that CLDC is just for “on low-power and low-RAM devices such as most of today’s cell-phones”, that will create a myth that i am trying right now (like you are doing for J2SE) to break.

Well most of the stuff is not future vision it is here for many people, maybe it is because i am European and we exchange phones like we exchange shirts, but most people i know have pretty capable phones (with cameras and most are JSR184 compliant, and also have good memory sizes), i am not so familiar with the situation in the USA… In Europe and a great part of Asia, Cell phones are already pretty able machines, fast and with large amounts of memory.

Agreed ;D

Now that is scary, and that myth should be stopped at all cost (then again it is the cost of having millions of java enable phones it makes the technology visible), people need to be enlightened but with time i think SUN people will be happier with Java in Cell phones than with Java in the Desktop (on the mid-term). You have to understand that i am just trying to stop you creating yet another myth about Java phones (it is my area so yes i am worried).

My technical understanding regarding J2ME is good IMHO, but then again it is only has good as my sources, and my sources most of the time are you guys at SUN :wink:

But also on my own personal experience dealing with these issues.

[looking at previous posts]
I believe this was one of the issues, why Jeff manted to have his own FAQ, so he doesn’t have to justify all his opinions :wink:
[/looking at previous posts]

Am I not right ?

“Wurm Online”, not “Worm Online”. :wink:

Other than that; nice. =)