SRL Archive - Discussions & Debates

Should I invest my time in java or c++?


rj

2013-04-10 17:02:05

Should I invest my time in learning java or c++?

What I want to do:

Maybe make a couple scripts using injection (java obv)
Make some type of malicious software (not to distribute)
Make games
Make a couple simple runescape scripts (basic color detection)

I'll call a couple java/c++ people in here for their opinions

@NKN - java
@Richard - java
@Le Jingle - java
@Brandon - c++

x[Warrior]x3500

2013-04-10 17:12:22

personally, i feel like there is more to learn with c++ over java. also, i believe that learning c++ first will provide a much sturdier foundation for your programming skills. java is nice because it is very easy to code in, and its quick. so if you want quick results, go with java.

Le Jingle

2013-04-10 18:07:22

I think of the two languages like this:

C++ is as Picasso is to art,
Java is as children are to paint by number's.

(Overall, I'd say C++ will take you further than java in terms of wholeness of learning gained)

masterBB

2013-04-10 18:09:31

From: Le Jingle
(Overall, I'd say C++ will take you further than java in terms of wholeness of learning gained)


Java is easier to find a job in atm. Most businesses choice java because of the quick develop time. But indeed, in c++ or c you can learn more, but is that needed?

Sin

2013-04-10 18:27:56

Java!

Wu-Tang Clan

2013-04-10 18:33:55

Is there a good website or online guide to learning Java, I was looking into it as well.

x[Warrior]x3500

2013-04-10 18:35:15

http://thenewboston.org/list.php?cat=31

google helps a lot too, lots of good places all around. but that link should help u a good amount

masterBB

2013-04-10 18:36:30

Best java tutorial in the world. It was my first programming experience: http://www.javacooperation.gmxhome.de/

senrath

2013-04-10 18:42:54

Is both not an option? Because learning one will make it fairly easy to learn the other.

Silentcore

2013-04-10 18:46:48

Codeacademy.com might help a little bit too..

rj

2013-04-10 18:48:51

The thing I don't like about java is how if some tutorials are slightly outdated the code won't work

senrath

2013-04-10 18:51:40

Uh, Java tutorials usually need to be more than "slightly" outdated before they're no good.

Sin

2013-04-10 19:00:03

From: senrath
Uh, Java tutorials usually need to be more than "slightly" outdated before they're no good.


We have to use Java 4 JRE at school…..

rj

2013-04-10 19:00:26

From: senrath
Uh, Java tutorials usually need to be more than "slightly" outdated before they're no good.


Well sometimes they are around a year old and when I get an error I don't really know how to fix it because I'm new to java.

Also what about c#? The name sounds cool @DannyRS

tealc

2013-04-10 19:04:10

C# is microsoft's version of java. C, C++, C# and java all have very similar syntax.

senrath

2013-04-10 19:55:03

From: Sin
We have to use Java 4 JRE at school…..

I'm so, so sorry.

From: Officer Barbrady
Well sometimes they are around a year old and when I get an error I don't really know how to fix it because I'm new to java.

Also what about c#? The name sounds cool @DannyRS


Hmm, I've never really run into that problem. But then again, I didn't first try learning a language from just online tutorials.

CodingBat has good ones, though.

Physic

2013-04-10 20:07:34

Not really relevant, but you got a name change didn't you

Brandon

2013-04-10 20:08:20

Well.. I know both languages listed quite well but..

My opinion:

Advantages of C#/C++

C# > Java.. by far!! Not to mention C#'s Marshal and Interops make it more ideal than Java for native types. JNI gets pretty dirty when dealing with native types unlike C#. Java is missing way too many features and things that C/C++/C# has.


Of course, since I firmly believe C++/ASMx86 is the best language(s), my vote goes to C++. Generics just cannot replace templates as they are far too limited and the C++x11 features are pretty damn good!


Malicious things I have dabbled with way too much but I must say (got in trouble for it at school), when it comes to any type of malware, there are two languages they are almost always written in: Visual Basic, and C/C++. These languages are/were the best for any type of malicious program. VB only made it easy at the time. I think most VB malware is being updated to C# or at least it's preferable over VB now.


Injection: I must be honest that I never really understood injection in Java fully (something I plan to possibly play with), but I must say that I certainly prefer injection in C++/ASM as it is much more fun, I get to handle memory, allocation, everything myself. GLHook is a good example and will probably also work for WebGL with minor changes.

In fact, today, I've done a presentation on security and reverse engineering for my Uni. Was a bit sad that everyone expected Java :(

For colour finding, any language is good but again, C++ for me because you simply "GetWindowDC", "GetClientDC" and bitblt the images or do GetColour on it.

Bitblt is as fast as it can possibly get between Java and C/C++ for any sorta image processing (even OpenGL uses it in its call chain under the hood).

Quite a bit of things in java piss me off.. Deprecated stuff.. Seriously? Just remove it! No one uses java 1.1 anymore -_-.

Boxed Datatypes cannot be casted to primitives or vice-versa (yet the assignment operator works -_-). Too many things missing. I'd prefer C# any day.
See here: http://stackoverflow.com/questions/15800650/class-cast-exception-from-double-to-double


Advantages to Java:

Libraries are all provided for simple tasks (this is an amazing thing about java unless you like rolling your own like moi.. Control freak ;)).
Data types are easier to handle (only if you don't know what you're doing in other languages).
JNI/JNA is always there for native types if ever needed (bit annoying though but good! SMART & GLHook both use this :))
Unsafe class can also be used but again, it's mostly undocumented. In case you need memory handling in Java, it can be done.
Quite a lot of safe-guards for new users (too safe for me)


Disadvantages to Java:

Making GUI's from scratch! Worst language to make GUI's in is Java! Bunch of silly stupid layouts when they could have simply done what every other language does: Specify the control position though a POINT, TPoint, (X, Y), etc. Instead, you need to pad controls to the right spot. You need to vertically/horizontally align controls using grouping.

Inheriting from Super-types are a pain. Can give unexpected results sometimes. Ex: Inheriting from JFrame and overriding paint().

Disadvantages to C++:
Most things are written from scratch. If you are not familiar with the RAII idiom, you can seriously mess things up pretty bad. A strong core in C++ is required to code anything useful/good/fast at all.

A lot of people complain about pointers but they probably don't know what they're doing. Still, silly mistakes will certainly catch you off guard and since you are dealing with memory yourself, sometimes you may end up restarting the computer when beginning ;)

Template errors.. Omg.. one time I was compiling a 32 bit inline assembly code in 64 bit program but had a ton of templates. My error message was literally 71 lines in length and completely redundant. I missed a Comma -_-.. Oh and I forgot to do an #ifdef x86_64.
Yes. Template errors are probably the absolute worst error messages you can get but it only makes you better as you really learn what the compiler is saying or what you're doing wrong.



I personally prefer MSDN over Java-docs. But that is a preference. MSDN usually has examples as well.


Overall opinion. Both are good languages but I'd prefer if you compared C# to C++. Not Java.
Every language has advantages and disadvantages. How many for the task at hand is what you need to consider when choosing.

NKN

2013-04-10 20:09:35

I like Java and C++.
I never got really far with C++, about all I learned was vectors and pointers.

Learn both. If you learn one, learning the second is easier.

rj

2013-04-10 20:22:25

From: Brandon
Well.. I know both languages listed quite well but..

My opinion:

Advantages of C#/C++

C# > Java.. by far!! Not to mention C#'s Marshal and Interops make it more ideal than Java for native types. JNI gets pretty dirty when dealing with native types unlike C#. Java is missing way too many features and things that C/C++/C# has.


Of course, since I firmly believe C++/ASMx86 is the best language(s), my vote goes to C++. Generics just cannot replace templates as they are far too limited and the C++x11 features are pretty damn good!


Malicious things I have dabbled with way too much but I must say (got in trouble for it at school), when it comes to any type of malware, there are two languages they are almost always written in: Visual Basic, and C/C++. These languages are/were the best for any type of malicious program. VB only made it easy at the time. I think most VB malware is being updated to C# or at least it's preferable over VB now.


Injection: I must be honest that I never really understood injection in Java fully (something I plan to possibly play with), but I must say that I certainly prefer injection in C++/ASM as it is much more fun, I get to handle memory, allocation, everything myself. GLHook is a good example and will probably also work for WebGL with minor changes.

In fact, today, I've done a presentation on security and reverse engineering for my Uni. Was a bit sad that everyone expected Java :(

For colour finding, any language is good but again, C++ for me because you simply "GetWindowDC", "GetClientDC" and bitblt the images or do GetColour on it.

Bitblt is as fast as it can possibly get between Java and C/C++ for any sorta image processing (even OpenGL uses it in its call chain under the hood).

Quite a bit of things in java piss me off.. Deprecated stuff.. Seriously? Just remove it! No one uses java 1.1 anymore -_-.

Boxed Datatypes cannot be casted to primitives or vice-versa (yet the assignment operator works -_-). Too many things missing. I'd prefer C# any day.
See here: http://stackoverflow.com/questions/15800650/class-cast-exception-from-double-to-double


Advantages to Java:

Libraries are all provided for simple tasks (this is an amazing thing about java unless you like rolling your own like moi.. Control freak ;)).
Data types are easier to handle (only if you don't know what you're doing in other languages).
JNI/JNA is always there for native types if ever needed (bit annoying though but good! SMART & GLHook both use this :))
Unsafe class can also be used but again, it's mostly undocumented. In case you need memory handling in Java, it can be done.
Quite a lot of safe-guards for new users (too safe for me)


Disadvantages to Java:

Making GUI's from scratch! Worst language to make GUI's in is Java! Bunch of silly stupid layouts when they could have simply done what every other language does: Specify the control position though a POINT, TPoint, (X, Y), etc. Instead, you need to pad controls to the right spot. You need to vertically/horizontally align controls using grouping.

Inheriting from Super-types are a pain. Can give unexpected results sometimes. Ex: Inheriting from JFrame and overriding paint().

Disadvantages to C++:
Most things are written from scratch. If you are not familiar with the RAII idiom, you can seriously mess things up pretty bad. A strong core in C++ is required to code anything useful/good/fast at all.

A lot of people complain about pointers but they probably don't know what they're doing. Still, silly mistakes will certainly catch you off guard and since you are dealing with memory yourself, sometimes you may end up restarting the computer when beginning ;)

Template errors.. Omg.. one time I was compiling a 32 bit inline assembly code in 64 bit program but had a ton of templates. My error message was literally 71 lines in length and completely redundant. I missed a Comma -_-.. Oh and I forgot to do an #ifdef x86_64.
Yes. Template errors are probably the absolute worst error messages you can get but it only makes you better as you really learn what the compiler is saying or what you're doing wrong.



I personally prefer MSDN over Java-docs. But that is a preference. MSDN usually has examples as well.


Overall opinion. Both are good languages but I'd prefer if you compared C# to C++. Not Java.
Every language has advantages and disadvantages. How many for the task at hand is what you need to consider when choosing.


Thanks, and your telling me you can inject the runescape liens with java?

Sin

2013-04-10 20:24:59

From: senrath
I'm so, so sorry.



Here's our IDE:

Brandon

2013-04-10 20:26:24

From: Officer Barbrady
Thanks, and your telling me you can inject the runescape liens with java?


Absolutely. Powerbot, Tribot, a lot of clients do this. I'm not too great with Java injection (class injection) but yes. RS is written in Java. Of course it can be injected into using Java and it can also be "reflected" using Java.

If I may, I recommend Eclipse over Netbeans IDE or Dr. Java for Java. This will improve your experience and you'll enjoy it.

rj

2013-04-10 20:39:37

From: Brandon
Absolutely. Powerbot, Tribot, a lot of clients do this. I'm not too great with Java injection (class injection) but yes. RS is written in Java. Of course it can be injected into using Java and it can also be "reflected" using Java.

If I may, I recommend Eclipse over Netbeans IDE or Dr. Java for Java. This will improve your experience and you'll enjoy it.

Lol I miworded it… Lol I meant c++ lol I knew eh use java idk why i said that

Also sin what IDE is that what does it use?

JPHamlett

2013-04-10 20:43:55

From: Brandon
Absolutely. Powerbot, Tribot, a lot of clients do this. I'm not too great with Java injection (class injection) but yes. RS is written in Java. Of course it can be injected into using Java and it can also be "reflected" using Java.

If I may, I recommend Eclipse over Netbeans IDE or Dr. Java for Java. This will improve your experience and you'll enjoy it.

+1 for eclipse, java is a very easy and relatively safe language.

I am very limited in c++, but if you try to learn recursion in c++ and forget to make a base case……you just crashed your computer.

Brandon

2013-04-10 21:12:38

From: Officer Barbrady
Lol I miworded it… Lol I meant c++ lol I knew eh use java idk why i said that

Also sin what IDE is that what does it use?


Ohh.. so you're asking if you can inject into Runescape using C++?

Yes. You can. Can also inject into the JVM. An example is again, GLHook which can either be used with "SMART" or "Browsers". In order to use it in a browser, it must be injected into the Java applet that is loaded when RS loads. If you want, you can also inject into the Official RS client.

So the answer is yes, both Java & C++ can inject into RS. I believe for actually hooking the RSClient applet, its easier in Java as in C++ you'd have to read all OP codes of the JVM but I think Java has a API called "ASM" that you can download and makes it so much easier. At least, there's traces of that in Tribot so yeah.

You usually want to use C++ for the low level stuff in RS such as reading the JVM or Dx/Gl. Java is of course better for hooking RS because you can use "ASM" (Not referring to the language) and read the class fields. Again, C++ would be reading "memory" directly and Java would read
"fields" afaik.


If someone can post a nice Java example for him, that would be great.. I've added some C++ below to get you or anyone started on Inject/reverse-engineering.


Ex (NOT going to post the whole class as there's lots of malicious code but this will certainly get you started)..

It is using Unicode:

#include <winternl.h>

#include <tchar.h>
#include <string>

#define UNICODE
#define _UNICODE

typedef struct _LDR_MODULE
{
LIST_ENTRY InLoadOrderModuleList;
LIST_ENTRY InMemoryOrderModuleList;
LIST_ENTRY InInitializationOrderModuleList;
PVOID BaseAddress;
PVOID EntryPoint;
ULONG SizeOfImage;
UNICODE_STRING FullDllName;
UNICODE_STRING BaseDllName;
ULONG Flags;
SHORT LoadCount;
SHORT TlsIndex;
LIST_ENTRY HashTableEntry;
ULONG TimeDateStamp;
} LDR_MODULE, *PLDR_MODULE;

typedef struct _ProcessModuleInfo
{
std::uint32_t Size;
std::uint32_t Initialized;
HANDLE SsHandle;
LIST_ENTRY LoadOrder;
LIST_ENTRY InitOrder;
LIST_ENTRY MemoryOrder;
} ProcessModuleInfo, *pProcessModuleInfo;

typedef struct _REMOVED_MODULE
{
void* ModuleBase;
LDR_MODULE Module;
std::wstring BaseDllName;
std::wstring FullDllName;
} REMOVED_MODULE, *PREMOVED_MODULE;

#ifdef UNICODE
#define tcout std::wcout
#else
#define tcout std::cout
#endif

typedef std::basic_string<TCHAR> tstring;
typedef NTSTATUS NTAPI (*pNtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG);

class Injection
{
public:
Injection();
Injection(tstring Process, tstring File);
Injection(const Injection &I) = delete;
Injection(Injection&& I) = delete;
~Injection();

bool Inject(tstring Process, tstring File);
bool Unload(tstring Process, tstring File);

void UnlinkLocalProcessModule(LDR_MODULE* module); //Used to HIDE a module from scanners such as Wow's Warden or RS's Jaclib.
void UnlinkRemoteProcessModule(HANDLE ProcessHandle, LDR_MODULE* ModulePointer); //Same as above but out of process hooking.

void ListLocalModulesInfo();
void ListProcessModulesInfo(tstring Process);


Injection& operator = (const Injection& I) = delete;
Injection& operator = (Injection&& I) = delete;
};


PROCESSENTRY32 GetProcessInfo(const char* ProcessName)
{
void* hSnap = nullptr;
PROCESSENTRY32 Proc32 = {0};
if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) == INVALID_HANDLE_VALUE) return Proc32;
Proc32.dwSize = sizeof(PROCESSENTRY32);
while(Process32Next(hSnap, &Proc32))
{
if(!stricmp(ProcessName, Proc32.szExeFile))
{
CloseHandle(hSnap);
return Proc32;
}
}
CloseHandle(hSnap);
Proc32 = {0};
return Proc32;
}

bool IsProcessRunning(const TCHAR* pProcessName)
{
return (GetProcessInfo(pProcessName).th32ProcessID != 0);
}

Injection::~Injection() {}

Injection::Injection() {}

Injection::Injection(tstring Process, tstring File) {this->Inject(Process, File);}

bool Injection::Inject(tstring Process, tstring File)
{
if (IsProcessRunning(Process.c_str()))
{
HMODULE hKernel32 = nullptr;
void* RemoteAddress = nullptr;
TCHAR FilePath[MAX_PATH + 1] = {0};
HANDLE ProcessHandle, hThread = nullptr;
LPTHREAD_START_ROUTINE LoadLibraryHandle = nullptr;

PROCESSENTRY32 ProcessInfo = GetProcessInfo(Process.c_str());
_sntprintf(FilePath, MAX_PATH, File.c_str());

if ((ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, false, ProcessInfo.th32ProcessID)))
{
if (hKernel32 = GetModuleHandle(_T("Kernel32.dll")))
{
#ifndef UNICODE
LoadLibraryHandle = reinterpret_cast<LPTHREAD_START_ROUTINE>(xGetProcAddress(hKernel32, "LoadLibraryA"));
#else
LoadLibraryHandle = reinterpret_cast<LPTHREAD_START_ROUTINE>(xGetProcAddress(hKernel32, "LoadLibraryW"));
#endif

RemoteAddress = VirtualAllocEx(ProcessHandle, nullptr, File.size() * sizeof(TCHAR), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessHandle, RemoteAddress, FilePath, File.size() * sizeof(TCHAR), nullptr);
hThread = CreateRemoteThread(ProcessHandle, nullptr, 0, LoadLibraryHandle, RemoteAddress, 0, nullptr);
WaitForSingleObject(hThread, INFINITE);
VirtualFreeEx(ProcessHandle, RemoteAddress, File.size() * sizeof(TCHAR), MEM_RELEASE);
CloseHandle(ProcessHandle);
CloseHandle(hThread);
return true;
}
CloseHandle(ProcessHandle);
}
}
return false;
}

bool Injection::Unload(tstring Process, tstring File)
{
if (IsProcessRunning(Process.c_str()))
{
HMODULE hKernel32 = nullptr;
void* RemoteAddress = nullptr;
TCHAR FilePath[MAX_PATH + 1] = {0};
HANDLE ProcessHandle, hThread = nullptr;
LPTHREAD_START_ROUTINE LoadLibraryHandle = nullptr;

PrintProcessInfo(Process.c_str());
PROCESSENTRY32 ProcessInfo = GetProcessInfo(Process.c_str());
_sntprintf(FilePath, MAX_PATH, File.c_str());

if ((ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, false, ProcessInfo.th32ProcessID)))
{
if (hKernel32 = GetModuleHandle(_T("Kernel32.dll")))
{
LoadLibraryHandle = reinterpret_cast<LPTHREAD_START_ROUTINE>(xGetProcAddress(hKernel32, "FreeLibrary"));
RemoteAddress = GetModuleInfo(ProcessInfo.th32ProcessID, File).modBaseAddr;
hThread = CreateRemoteThread(ProcessHandle, nullptr, 0, LoadLibraryHandle, RemoteAddress, 0, nullptr);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(ProcessHandle);
CloseHandle(hThread);
return true;
}
CloseHandle(ProcessHandle);
}
}
return false;
}

void Injection::UnlinkLocalProcessModule(LDR_MODULE* module)
{
auto RemoveLink = [](LIST_ENTRY Link)
{
Link.Blink->Flink = Link.Flink;
Link.Flink->Blink = Link.Blink;
};

RemoveLink(module->InLoadOrderModuleList);
RemoveLink(module->InMemoryOrderModuleList);
RemoveLink(module->InInitializationOrderModuleList);
RemoveLink(module->HashTableEntry);

memset(module->BaseDllName.Buffer, 0, module->BaseDllName.Length);
memset(module->FullDllName.Buffer, 0, module->FullDllName.Length);
memset(module, 0, sizeof(LDR_MODULE));
}

void Injection::ListLocalModulesInfo()
{
/** The Offsets for the Assembly code is calculated as follows:

void* Teb = (void*)FIELD_OFFSET(NT_TIB, Self);
void* Peb = (void*)(sizeof(NT_TIB) + (3 * sizeof(void*)) + sizeof(CLIENT_ID));
int Pmi = sizeof(void*) + (2* sizeof(ULONG));

**/

ProcessModuleInfo *pmInfo = nullptr;

__asm__ volatile
(
"movl %%fs:0x18, %%eax\n\t"
"movl 0x30(%%eax), %%eax\n\t"
"movl 0x0C(%%eax), %%eax\n\t"
"movl %%eax, %0\n\t"
: "=r" (pmInfo) ::
);

LDR_MODULE* module = reinterpret_cast<LDR_MODULE*>(pmInfo->LoadOrder.Flink);

while(module->BaseAddress)
{
std::wstring BaseDllName(module->BaseDllName.Length / sizeof(WCHAR), 0);
std::wstring FullDllName(module->FullDllName.Length / sizeof(WCHAR), 0);
memcpy(&BaseDllName[0], module->BaseDllName.Buffer, module->BaseDllName.Length);
memcpy(&FullDllName[0], module->FullDllName.Buffer, module->FullDllName.Length);

tcout<<_T("BaseAddress: ")<< module->BaseAddress<<nl;
tcout<<_T("Entry-Point: ")<< module->EntryPoint<<nl;
std::wcout<<_T("Base DLL-Name: ")<< BaseDllName<<nl;
std::wcout<<_T("Full DLL-Name: ")<< FullDllName<<nl;
tcout<<_T("Reference Count: ")<< module->LoadCount<<nl;
tcout<<_T("Image Size: ")<< module->SizeOfImage<<nl;
tcout<<_T("Time Date Stamp: ")<< module->TimeDateStamp<<nl;
tcout<<nl;

module = reinterpret_cast<LDR_MODULE*>(module->InLoadOrderModuleList.Flink);
}
}

See here for the other half: http://villavu.com/forum/showthread.php?t=100266

[XoL]

2013-04-10 21:16:31

Learn either then the other will be easy to learn (I learned Java first, well still learning)

Lord Waffles

2013-04-10 23:43:39

Honestly, I would self teach myself C# first. It's a solid language that is about as easy to learn as java, but fuctions a lot closer to C++.

C++ takes quite some time to learn, and by learning C# you drastically cut the learning curve needed and it really isn't a whole lot more complicated. C# is basically C++ with a wrapper (correct me if i'm wrong).

I personally don't know much java nor do I really care to, but the great thing is once you learn one language…learning the rest is pretty simple.

The other side of the argument is a lot of people (/g/,Reddit) prefer to learn C++ first because it is arguably one the hardest languages to learn due to the memory management so the rest is just a cake walk.

Richard

2013-04-11 11:54:44

I'm honestly surprised that no one has brought up the whole "C++ is faster than Java thing", although I suppose the JVM has been hugely optimised over time.

If you've never learnt a language other than PS than I honestly would recommend java first, as it is much easier to get started. Although it changes from person to person how hard you find it to pick up C++. Perhaps you could learn C instead? It's considered to be easily to learn than C++, and it will ultimately help you if you intend to learn C++.

Also, if you plan to do a degree in comp sci, you'll find that the majority of unis (at least in the UK) teach you java in your first year, so you'll find your first year very easy.

As stated before, use eclipse if you choose java, it's a very friendly IDE.

rj

2013-04-11 12:01:13

I think I'm going to go with c# if it has free IDE if not java.

I already have eclipse installed. Also if c# has some big IDE like Microsoft visual studio(was like 8 gb) then ill just go with java

weequ

2013-04-11 12:11:06

I'd just go write those injection scripts. Probably the easiest and most fun way to learn a new language. Also netbeans IDE is what I use but I guess eclipse is more lightweight.

rj

2013-04-11 12:15:45

From: weequ
I'd just go write those injection scripts. Probably the easiest and most fun way to learn a new language. Also netbeans IDE is what I use but I guess eclipse is more lightweight.


Kinda hard to jump in to java

Sin

2013-04-11 12:28:57

From: Officer Barbrady
Kinda hard to jump in to java


Hardly ;)

J J

2013-04-11 12:41:03

From: Officer Barbrady
I think I'm going to go with c# if it has free IDE if not java.

I already have eclipse installed. Also if c# has some big IDE like Microsoft visual studio(was like 8 gb) then ill just go with java

I suggest using Visual Studio 2012 Express edition. It looks great and I really like the layout and it boots up fast - much faster than Eclipse. Yes, it's just booting up once but it does feel nice that you have it all started up within 5 seconds or so.

I started with Java and after nearly a year I think I can call myself intermediate now. Java has a lot to offer such as developing for Android and if you build a .jar you can get it working cross platform pretty easily.

You should really think of something what you want to make - I wanted to make RuneScape scripts and after that look into Android. Both have succeed and I'm still rather actively making Java based RuneScape scripts for various bots.

It's also good for your grades because I have been passing all programming tests with 90-100%. You just have to find something you enjoy doing and dedicate yourself to it. Today I actually had a test where we needed to build an Android app which was rather hard but due to making all assignments and extra work I figured everything out and everything worked so I will probably keep my grade at the same level :P

I'm going to look into c# and c++ though, I did a bit of research into DirectX hooking - not only for RuneScape related stuff but also for games like Call of Duty etc. I got a dll injection working with RuneScape so it shows a little bit of information.. but it's just too much to do if you are just starting out a week before :P

C# has a really nice library of functions and I really like how you can get a handle of a program and just get an image of it, resize it, minimize it, etc. Really neat. Perhaps you want to make an iOS app which uses C I believe :P

rj

2013-04-11 12:41:06

From: Sin
Hardly ;)


It's so like.. Weird it's hard to look at somebody else's code because its like..variable based

@j j don't you need a Mac to make iOS apps? Maybe it's different now ( I don't count gamemaker8)

Zeds

2013-04-11 16:48:46

From: Officer Barbrady
I think I'm going to go with c# if it has free IDE if not java.

I already have eclipse installed. Also if c# has some big IDE like Microsoft visual studio(was like 8 gb) then ill just go with java


Just download VS Express…And i'm glad you decided to learn C#. C# is just as easy to learn as Java but you'll have an easier time learning C++ later on as they are similar. Honestly, if it weren't for scripting, I wouldn't touch Java. It's slow and weak compared to C# and C++. People might hate on this opinion but I really think C# and C++ stomp on Java.

NKN

2013-04-11 20:09:27

Just stopping in for a Java example.

Here's my old client.
https://github.com/NKNScripts/nknbot

It's Java.

rj

2013-04-11 20:38:29

I've decided to learn java instead I looked at a couple c# tutorials and it was just like java but it said ou can't use global variables and I don't want to make a .exe for everyone to be able torun I would rather make a .jar