|
I have made the same suggestion a number of times, even providing links to the tutorial pages, but he/she still keeps coming back with similar questions. I hope s/he's not getting paid for this.
I must get a clever new signature for 2011.
|
|
|
|
|
...you will at least need one properties file defining the database for your application.
You can set up the properties in a folder aside the source:
- Source "src"
- Resources "res"
- "images"
- "properties"
- "database"
- "application"
- ....
And it is possible to add encryption to them.
regards
Torsten
I never finish anyth...
|
|
|
|
|
hi guys sorry i've been away for a long time, recently i've been doing some basic java programming, i've read a few things about bytecode which is something similar to asm but more abstract, and my question is, can it be possible to program in bytecode, if it is is there a manual out there on the web to start off with cuz i've been googling about it and i can't find any, i think if it is possible to program using bytecode the program itself would be more neat and faster as well as it is when u program in assembly.
|
|
|
|
|
Bytecode is Java's intermediate language that gets translated to machine code by the Java run time system. I have a feeling that there is documentation available for the IL but it is proprietary to Oracle (Sun) and you have to pay to get hold of a copy. Try the Java web sires for more information.
I must get a clever new signature for 2011.
|
|
|
|
|
Richard MacCutchan wrote: I have a feeling that there is documentation available for the IL but it is proprietary to Oracle (Sun) and you have to pay to get hold of a copy.
No, it is available for free as part of the published Java VM Specification.
Richard MacCutchan wrote: Try the Java web sires for more information.
Java web sire: I like the sound of that. I think I will put it on my CV.
|
|
|
|
|
David Skelly wrote: Java web sire: I like the sound of that. I think I will put it on my CV.
The father of ...
I must get a clever new signature for 2011.
|
|
|
|
|
geniuspc wrote: i think if it is possible to program using bytecode the program itself would be more neat and faster as well as it is when u program in assembly.
That's certainly far from being true, otherwise why would there be any high-level languages like Java ? You tend to forget that designing a very big program in assembler becomes very quickly something totally unmaintainable and with probably a lot more bugs than if you would write in in C++ (for instance). Most of the time, the compiler is smart enough to generate efficient assembly code from your C++ code and the higher-level abstraction forces you to avoid certain "errors".
What you seem to forget is that a well-written C++ code will probably run faster and with less errors than a badly written assembler code. And the assembler language is not really well suited for writing large applications which might need to be refactored or adapted in the future.
To finish, I will simply refer to a quote from Donald Knuth: "Premature optimization is the root of all evil". Which is what you are trying to do in your case: assembler is faster than C++, so I will write my code in assembler (and you forget about the humain in the chain that would write more efficient code in C++ than in assembler).
|
|
|
|
|
Yes, it is possible. Yes, there is documentation available. Yes, there are editors available to let you do it.
But unless you have some very specific requirements you would have to be completely barmy to consider writing bytecode by hand. The fact that you can do something doesn't mean that you should.
|
|
|
|
|
geniuspc wrote: i think if it is possible to program using bytecode the program itself would be more neat and faster as well as it is when u program in assembly
That is wrong. Perhaps bytecode looks like assembly, smells like assembly, tastes like assembly, but it is still bytecode. Probably it would be less neat, and sure it would not be faster.
|
|
|
|
|
To reiterate what others have said, writing byte code rather than Java would be synonymous to writing machine code rather than C.
Consider the problem domain. If there is a genuine performance issue, then it could be addressed using a lower level language - byte code or even assembler / machine code - but more often than not a high level language - C/ C++ for examples - and a targeted compiler will be enough.
In my limited experience - a mere 25 years - the better abstraction the language provides the less problems there will be with the code. The majority of bugs are due to simple mistakes by the programmer, by reducing the possibility of these the quality of the code is improved.
Panic, Chaos, Destruction.
My work here is done.
or "Drink. Get drunk. Fall over." - P O'H
OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre
|
|
|
|
|
Hi,
I'm new to using Runtime.getRuntime().exec on WindowsXP, JRE 6.
Solution should work on all Windows NT from 5 upwards and common UNIX.
I called it in the following way
process = Runtime.getRuntime().exec(cmdargs);
where
cmdargs[0] = "D:\Somepath\NmMutex"
cmdargs[1] = "lock"
Program NmMutex with argument lock runs until its process is stopped externally.
When
Runtime.getRuntime().exec(cmdargs);
is called, the calling thread remains suspended, until program NmMutex is killed.
Is that the normal behaviour of Runtime.exec? I thought the calling thread would return, even if the program it started is still running, so I can observe the prog by reading its stdout and stderr from my Java app. If not it would return there would be no process created and I could not observe the program.
Which way is best to solve that? Start prog in Background, like
process = Runtime.getRuntime().exec("start /B NmMutex lock");
resp.
process = Runtime.getRuntime().exec("& NmMutex lock");
?
Thank you
Werner
|
|
|
|
|
It looks like Runtime.exec() is blocking on the process it spawned (like the old Unix exec()?). I can think of two portable solutions:
1. start a new Thread to do the exec() and let it block.
2. use ProcessBuilder.start()[^] This article[^] discusses the use of ProcessBuilder and Runtime.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
It looks like that, although I'm much surprised, because this is not what Runtime.exec should do, when I read into the docs - ehm - assumed I understood them also.
1 might work, but you don't get the process handle, because calling thread is suspended before return from call
2 yes right, I think its worth trying because it seems to be more convenient
thank you
Werner
|
|
|
|
|
I couldn't see anywhere the blocking/non-blocking behaviour of exec() was specified.
I think I read somewhere that ProcessBuilder is the preferred technology since Java 5. Certainly looks a lot more usable, although I haven't used either in anger.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
Hi,
I tried the same with process builder
ProcessBuilder pbuilder = new ProcessBuilder(cmdlist);
process = pbuilder.start();
procmon = new ProcessMonitor(process);
where
cmdlist[0] = "D:/MyPath/NmMutex"
cmdlist[1] = "lock" (btw. this doesn't mean the main thread waits at lock, its try_lock)
The thread returns as soon as the process, which was called ended. I tested it with a loop whithin the external process. If it is finite, the thread returns. If it is infinite the thread doesn't return. I.e. exec and start are blocking.
The idea to call ProcessBuilder.start within a separate process is basically good, but I woudn't receive a process handle when start would not return. And without that, I would not be able to attach streams to the stdout and stderr. Hence the process might block as soon as the stdout and stderr buffers are filled up.
If I started a background shell and within that my process, the solution would be os dependend (not KISS, complicated, not that good).
Thanks
Werner
|
|
|
|
|
Hi,
the process started by ProcessBuilder
and by Runtime.exec - which is implemented via ProcessBuilder -
is started asynchronously when the java app is started from jar.
The effect of the frozen thread happened exclusively within the debbuger session.
I should have tried.
Sorry
and thanks again
Werner
|
|
|
|
|
// I need someone to help me fix this codes
// it's about CALCULATING in Java, thanks alot...
import java.util.Scanner;
public class Calculate
{
static Scanner in = new Scanner(System.in);
public static void main(String [] args)
{
String sign;
int num1;
int num2;
int num3;
int ans;
System.out.print("Enter your Calculations => \n");
sign = in.nextLine();
if(args.Length == 3)
{
num1 = Integer.parseInt(args[0]);
sign = (args [1].equal("1"));
num2 = Integer.parseInt(args[2]);
num3 = Integer.parseInt(args[3]);
ans = num1 + num2;
ans = num1 - num2;
ans = num1 / num2;
System.out.println("Answer = "+ ans);
}else if(args[1].equal("+")) {
ans = num1 + num2;
System.out.println("num1 "+ "num2 " = ans);
}
else if(args[2].equal("-")) {
ans = num1 - num2;
System.out.println("num1 "- "num2 "= ans);
}
else if(args[3].equal("/")) {
ans = num1 / num2;
System.out.println("num1 "/ "num2 "= ans);
}
else if("Do it again => Calculate arg1, arg2, arg3");
}
}
}
modified on Wednesday, January 19, 2011 9:58 AM
|
|
|
|
|
Please consider the following points:
1) Put your question inside the body of the message and keep a concise but precise title
2) Use the "code block" button to format your code so that it is readable
3) Provide the information which is required for us to understand the problem (in your case, what you are getting and what you were expecting). How can we guess what you had in mind when writing your code ?
Related to your question: there are a couple of points which are wrong in your code.
1) You have three consecutive lines in which you assign a value to ans (num1+num2, num1-num2, num1/num2). Only the last value will be kept, since the other ones will be overriden (so, what's the point of having those lines anyway ?)
2) The sign variable is never used
3) If you don't fall in the first if, then you are using the num1 and num2 variables which are not initialized.
4) In the different else, you check for args[1], then args[2], then args[3] for the type of operation to execute. I would guess that it is always at the same position (args[1]).
I suggest that you read some basic tutorial about java because it seems you are confused about some fundamental concepts.
|
|
|
|
|
thanks alot Mr. Cedric
the reason for this code is that l wonted to do CALCULATING IN JAVA?
l understand u completely but for now,how should l make the code work(l mean to initialize it)and not to fall back the way l was before?
thanks for ur alert for the tutorials.please help me for this one...
modified on Wednesday, January 19, 2011 9:57 AM
|
|
|
|
|
You can already fix the points I mentionned in my previous message, this was detailed enough for you to understand the problems.
You don't expect us to write the program for you, do you ?
|
|
|
|
|
thanks again..
l dont wont u to write all the program for for but to guide me Fix the errors is all what l need..but thanks alot for ur time becouse this's my first time of sending a code in this forum...
modified on Wednesday, January 19, 2011 10:02 AM
|
|
|
|
|
Try here[^] for some good tutorials that will help you with your problem.
I must get a clever new signature for 2011.
|
|
|
|
|
Mr. Cedric
please a question?
1- how should make the sign veriable work and?
2- how to initialize those to variables( num1 and num2)?
|
|
|
|
|
Initialize your variables at the beginning of the program by reading ONCE the command line arguments: only do this of course if the number of arguments match, otherwise you exit the program with an error.
BTW, you have another problem: you are expecting 3 command line arguments but you retrieve four of them (num3 is initialized with args[3], which is out of bounds).
|
|
|
|
|
//l've change the code but still 1 error has been occur
public static void main(String [] args)
{
String sign;
int num1;
int num2;
//int num3;
int ans;
System.out.print("Enter your Calculations =>: \n");
sign = in.nextLine();
if(args.Length == 3)
{
num1 = Integer.parseInt(args[0]);
sign = (args [1].equal("1"));
num2 = Integer.parseInt(args[2]);
//num3 = Integer.parseInt(args[3]);
System.out.println("Answer = "+ ans);
}else if(args[0].equal("+")) {
ans1 = num1 + num2;
System.out.println("num1 "+ "num2 " = ans);
}
else if(args[1].equal("-")) {
ans2 = num1 - num2;
System.out.println("num1 "- "num2 "= ans);
}
else if(args[2].equal("/")) {
ans3 = num1 / num2;
System.out.println("num1 "/ "num2 "= ans);
}
System.err.println("Try Again");
}
}
}
|
|
|
|