Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / March 2007

Tip: Looking for answers? Try searching our database.

Maximum Length for a Java Class Name ?

Thread view: 
MattC - 19 Mar 2007 15:25 GMT
Can anyone tell me the maximum length of a Java class name?

Thanks,
MattC
Alex Hunsley - 19 Mar 2007 15:35 GMT
> Can anyone tell me the maximum length of a Java class name?

Have you tried the JLS (Java Language Specification), Google, and Google
groups yet?
Arne Vajhøj - 19 Mar 2007 15:59 GMT
> Can anyone tell me the maximum length of a Java class name?

Public classes needs to be in a file with the same name
as the class, so the file system will probably limit
it to 255 or something like that.

BTW, you other programmers on the team will murder you if
you use classnames longer than about 20 anyway ...

Arne
Piotr Kobzda - 19 Mar 2007 16:54 GMT
> Can anyone tell me the maximum length of a Java class name?

For current JVMs it is a maximum of 65536 characters for fully qualified
class name.

However, not all such long names are allowed.  The limit is 65536 bytes
for fully qualified class name encoded using modified UTF-8 as described
in "The class File Format" spec.  It comes from 'u2' capacity (16 bits)
-- the type of 'length' from constant pool 'CONSTANT_Utf8_info'
structure used to store class names in class files.

piotr
Chris Uppal - 19 Mar 2007 22:10 GMT
> For current JVMs it is a maximum of 65536 characters for fully qualified
> class name.

Occurs to me that there's a nice little obfuscation technique there -- rename
all classes  to so that their names start with, say, about 10 thousand spaces,
and there aren't too mamy bytecode tools that will be usuable with the
resulting classfiles ;-)

   -- chris
Piotr Kobzda - 20 Mar 2007 01:26 GMT
> Occurs to me that there's a nice little obfuscation technique there -- rename
> all classes  to so that their names start with, say, about 10 thousand spaces,
> and there aren't too mamy bytecode tools that will be usuable with the
> resulting classfiles ;-)

Well, I think the bytecode verifier will prevent against spaces in
names, but with other char, say 'x', or simply with randomly generated
long name, why not?... ;-)  Hopeless, it is very easy to rename
classes/methods/fields in class-files, so in a case, when you really
need good obfuscation, let more sophisticated tools do theirs job...
Well, I can't recommend any tool of such type, but I've heard they
exist... :)  (In fact, I don't recall any need for such a tool from my
past...  Of course, I see reasons for it, but I know also, what such a
tool can, and what it can't do...  So I probably will never "destroy" my
classes with it, there are lot of nicer things to do with Java classes
than obfuscating... :-) ).

piotr
Piotr Kobzda - 20 Mar 2007 12:59 GMT
Me:

> Well, I think the bytecode verifier will prevent against spaces in
> names, but with other char, say 'x', or simply with randomly generated
> long name, why not?... ;-)

Checked that, and it appears to me now, that, as Chris suggested, spaces
are also allowed by recent class verifiers (even with -Xfuture option
classes with only spaces in names are accepted).

I tried to find any formal specification on verification which states
that, but I haven't found anything stating it directly, neither in JLS,
nor in JVMS, except a single non-normative fragment from the latter
concerning verifications performed by the verifier:

   "• Checking that all field references and method references in the
constant pool have valid names, valid classes, and a valid type descriptor."

It is not about class names, it's on method and field references names
only, and even for them, it is not clear to me what a "valid names"
means here?...

So, it's better to assume, that on JVM level, any class name (excluding
maybe empty, and incorrectly encoded one) is allowed.

P.S.
There is also a mistake in my advice to the OP, the maximum class name
length is 65535 (not 65536) characters, sorry for that.

piotr
Joe Attardi - 20 Mar 2007 06:38 GMT
> Can anyone tell me the maximum length of a Java class name?

If you have to ask, your class name is probably too long. :)


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.