Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > Maximum Length for a Java Class Name ?

Reply
Thread Tools

Maximum Length for a Java Class Name ?

 
 
MattC
Guest
Posts: n/a
 
      03-19-2007
Can anyone tell me the maximum length of a Java class name?

Thanks,
MattC

 
Reply With Quote
 
 
 
 
Alex Hunsley
Guest
Posts: n/a
 
      03-19-2007
MattC wrote:
> 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?

 
Reply With Quote
 
 
 
 
=?ISO-8859-1?Q?Arne_Vajh=F8j?=
Guest
Posts: n/a
 
      03-19-2007
MattC wrote:
> 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
 
Reply With Quote
 
Piotr Kobzda
Guest
Posts: n/a
 
      03-19-2007
MattC wrote:
> 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
 
Reply With Quote
 
Chris Uppal
Guest
Posts: n/a
 
      03-19-2007
Piotr Kobzda wrote:

> 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


 
Reply With Quote
 
Piotr Kobzda
Guest
Posts: n/a
 
      03-20-2007
Chris Uppal wrote:

> 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
 
Reply With Quote
 
Joe Attardi
Guest
Posts: n/a
 
      03-20-2007
On Mar 19, 10:25 am, "MattC" <(E-Mail Removed)> wrote:
> Can anyone tell me the maximum length of a Java class name?


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

 
Reply With Quote
 
Piotr Kobzda
Guest
Posts: n/a
 
      03-20-2007
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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Maximum Function / Variable Name Identifier Length? David T. Ashley C Programming 3 01-02-2007 03:20 AM
Maximum length of Static name? harry Java 11 02-01-2006 08:57 PM
The number name 'System.Web.UI.WebControls' contains more than the maximum number of prefixes. The maximum is 3. mayur ASP .Net Web Controls 2 07-16-2004 05:14 PM
The number name 'System.Web.UI.WebControls' contains more than the maximum number of prefixes. The maximum is 3. mayur ASP .Net 2 07-02-2004 10:35 AM
System.ArgumentOutOfRangeException: Length cannot be less than zero. Parameter name: length =?Utf-8?B?SG96aQ==?= ASP .Net 1 06-01-2004 11:06 PM



Advertisments