I'm pretty new to Java and I'm just starting to venture into the UI world of it.
I've looked at what framework and tools to use.
My goals are:
Try to avoid implementing too much low level stuff through using an
existing framework.
Use portable libraries (I heard that not all libraries are made equal)
As for everything I do, I start with a lot of documentation and research and right now my choice is landing on javaFX and miglayout.
I develop with Linux Ubuntu (currently 13.04) but my user base will be a mix of windows and Ubuntu and maybe some MAC users.
I wanted to know from people with way more experience, their pain points while developing with javaFX2 and migLayout when it comes to portability to other OS.
I have found this thread:
How portable is JavaFX 2?
But the answer I'm looking for is not: it works in "X" but rather. To make it work in "X" and "Y". "a", "b" and "c" will have to be taken care of. handling "z" is hard because etc...
Thanks.
All you need is properly installed JDK, And with a little help from your preferred IDE you will get almost a complete portable working environment ).
Using Netbeans will hide the complexity behind generating a runnable jar file, for serious project using a dependency manager will be a must , both Gradle and Maven have good JavaFX plugin for build automation (by using Maven, you can clone my Github repository and start working immediately whatever the OS you're running),for more about JavaFX and Java SE integration see this answer from a OpenJDK contributor.
javaFX2 miglayout portability
Miglayout has a JavaFX plugin all you need is to add miglayout-javafx.jar and the miglayout-core.jar to your CLASSPATH, so there is no portability issues with MigLayout.
MigLayout is a real powerful layout manager (especially when it comes to Swing), but I prefer going the idiomatic way of building JavaFX user interfaces (essentially, enterprise and data-driven applications) by using fxml and scenebuilder.
more resources :
GUI Architectures,by Martin Fowler
JavaFX community website
The FX Experience blog
Related
I really miss the newer functions of a modern Eclipse implementation. Things like cool plugins such as Checkstyle, auto-javadoc, ease of JUnit testing.
I always did this whilst developing Notes Java Agents, and it was a great time saver.
I'm trying to do this with my new XPages project but I'm stumbling on how to include diverse OSGI libraries.
Can anyone help?
The quickest way to set up an Eclipse environment for XPages development is the XPages SDK. That should point to your Notes/Domino installations and create the Target Platform stuff for you. If you have additional libraries, you can either install them into Eclipse via the Help -> Install New Software option or add them to the Target Platform in Preferences -> Plug-in Development -> Target Platform.
There's a huge caveat, though: this sort of XPages development refers to library development specifically, not writing XPages applications. There isn't really currently a good way to do actual-XPages dev in Eclipse without losing tooling.
In addition to Jesse's answer: a colleague uses Eclipse only to develop in our XPages stuff - for the Java part only. We all use a local on-disk-version of the project that can be imported into Eclipse workspace. You then can use the editors and benefits of current Eclipse versions. Caveat also: you always have to refresh/sync the sources from your on-disk-project in DDE to test. Regarding JUnit tests: we also use them and doing even automated build-tests on a Jenskins server with that method
I'm some familiar with Cocos2d and Cocos2dx.
But only I worked in Mac, I know which is possible work with this engine (Cocos2dx) in Windows, but I don't know if is possible develop a game on Linux.
By the way:
I'm not talking about a port, I want develop a Videogame multiplataform on Linux.
Would be great know the way of how start my game on Linux.
Thanks!
While I haven't tried it, cocos-2dx is, according to their documentation, is usable on Linux although my understanding is that this means one can build android projects using cocos2d on Linux.
In terms of where to start, I've used both SFML and SDL as both are well supported on Linux. Both are cross platform although SDL supports a wider range of platforms - I have an SDL2 game in progress that runs on Linux and android for instance whereas SFML does not yet have android or iOS support. Coming from cocos2d though I think you'll find the SFML API easiest to pick up.
As a fair warning, the landscape is a bit confusing at present because both SFML and SDL have a popular stable release (1.6 for SFML and 1.2 for SDL) with one API along side a popular development release (2.0 for SFML and 1.3/2.0 for SDL) that has a similar but not identical API. This is particularly noticeable with SDL where the documentation for 1.2 is much better than the documentation for the development API. In terms of choosing one over the other, the stable releases are precisely that - stable. In both cases the development releases have been under way for some time so if you are willing to dig for documentation a bit and ask questions it's worth getting the new features.
There is book that provides a nice introduction to Linux game development that, while dated, might be a good first step if this is your first outing with games on Linux, especially if you decide to use SDL Programming Linux Games.
Update:
I saw the directions here and after (roughly) following them cocos2dx does build on my Ubuntu 12.04 x64 machine. The "Set up Environment" directions seem sound but the makefile information appears to be out of date as there is no build_linux.sh instead there is a make-all-linux-project.sh. After this finished pulling in missing deps and building I changed into the samples/HelloCpp/proj.linux directory and ran make. This created a HelloCpp binary in samples/HelloCpp/proj.linux/bin/debug. Running that popped a HelloWorld cocos2d screen. According to the output the verison is:
cocos2d-x debug info [cocos2d: cocos2d-2.1beta3-x-2.1.0]
That said, I don't see a lot of documentation for the linux port and most of the related community entries seem to be out of date so you may find more support from using one of the libraries I already mentioned.
Download cocos2d-x project there is a test sample games which compiles on all platform android, windows, iOS , Windows Phone ...See you are going to code in c++ that's it then whether you build it in linux or any other platform doesnt matter for cocos2d-x kind of engine
so i suggest start with the sample projects of cocos2d-x .... and as you want to do it in linux ...make something then compile it in linux like I do ...
I have Ubuntu 11.04 and am looking to start developing Linux modules. I use Visual Studio for C development in Windows, but I guess that's not an option for Linux. What would be a good IDE to work Linux modules ?
Depending on what you want to do there are number to choose from. However I think the closest one to visual studio equivalent will be eclipse.
From the FAQ:
Eclipse is an open source community whose projects are focused on
building an extensible development platform, runtimes and application
frameworks for building, deploying and managing software across the
entire software lifecycle. Many people know us, and hopefully love us,
as a Java IDE but Eclipse is much more than a Java IDE.
The Eclipse open source community has over 200 open source projects.
These projects can be conceptually organized into seven different
"pillars" or categories:
Enterprise Development
Embedded and Device Development
Rich Client Platform
Rich Internet Applications
Application Frameworks
Application Lifecycle Management (ALM)
Service Oriented Architecture (SOA)
The Eclipse community is also supported by a large and vibrant ecosystem of major IT > > > solution providers, innovative start-ups, universities and research institutions and > individuals that extend, support and complement the Eclipse Platform.
One very exciting thing about Eclipse is that many people are using
Eclipse in ways that we have never imagined. The common thread is that
they are building innovative, industrial-strength software and want to
use great tools, frameworks and runtimes to make their job easier.
It is all just a matter of personal preference.
Apart from what was mentioned in a similar question, I would like to name two more.
In our kernel-related projects, my colleagues and I currently use Geany lightweight IDE which is more than enough for us.
I also use Code::Blocks that resembles Visual Studio 2003 very much, it also does its job well. It has more advanced code completion features than Geany, I suppose.
Eclispe is always a popular choice and a very nice IDE
Eclipse (http://eclipse.org/) is a pretty good IDE. I have tried a few other ones such as KDevelop etc, but I have always found Eclipse to be the best and most stable.
Eclipse + CDT + at least a dual core processor and some Go of RAM and it will be a great adventure to navigate into the kernel sources.
Are there any good OOP languages that you can use on Linux? Obviously Java comes to mind, even running C# under mono.
Looking for a language that can be used for all round development, web dev, desktop, services etc.
Besides Mono C# and Java anything else come to mind?
Python seems to be the obvious choice. There a lot of great web frameworks for it, strong support for development of GTK desktop apps and many others. Ruby should also be mentioned, although it's not usually used for desktop apps.
Don't forget other languages running on top of the JVM either - most notably Scala, Clojure and Groovy.
Vala and D are new and interesting languages with some quality tools available. Vala was primarily designed to work smoothly in GNOME environment.
All of them. Whatever you want to use on Linux, you can.
Linux developent is a lot of things. For GUI application programming, you're most likely to want to program for one of the two big desktop environments, GNOME and KDE, or directly to the widget libraries that they are built on, GTK+ and Qt.
GTK+ is at its root a C library with object orientation being implemented as a set of conventions, very simply explained. However, many now program GTK+ and GNOME using true OOP languages like C++, C# using Mono (some very popular and default GNOME applications are built on Mono).
Another very interesting language for GTK+/GNOME is Vala, which is made to look and behave like C#, but which compiles to idiomatic GTK-using C, so all the GTK+ OOP conventions are lifted up to be part of the Vala language.
KDE and Qt are basically C++ libraries, but these also have bindings to other languages.
Both environments have good Python bindings.
You can still use C# with the Mono project.
Python and Ruby are probably the most logical choice for all-round development. PHP is also great for web development.
Interesting how as soon as Java gets ruled out as an answer that we go straight for dynamic languages.
I'd still suggest using Java as a lot of your C# knowledge will apply with subtle differences in convention.
For the compiled type of app how about Freepascal.
Multi-platform and pretty easy to get the hang of for a C#/Java developer I would have thought. Can do web, desktop, client-server etc etc. And free (as the name implies!). Plus, it's based on Pascal (obviously) so it's well tried and tested and not one of the 'languages du jour' :-)
Give a try to the Free Pascal and Lazarus IDE.
You are getting support for multiple platforms, not only Linux. You write code once and compile it everywhere and you have a quite nice IDE which will speed up your development process.
Take a look at screenshots
TIP: When using Lazarus try the last daily snapshot instead of stable release. Snapshots are much more up to date with bugfixes \ features.
Consider C++ with Boost.org. Boost is always coming out with new releases and it's all open source. Linux and C++ have a very long history and there are plenty of stable tools. Once you know C++, many new worlds seem to open up. There are several good IDE's as well. I like code::blocks.
I started using Linux for PHP web development. What is a helpful toolset to use for web development (mostly PHP) available for the Linux platform. My Current IDE is netbeans and I am happy with it.
In no particular order, my perfect environment consists of:
vim - text editing
git - version control
screen - terminal management
This is all you really need to build a great app in any language, for that matter (baseline). Every language has its specifics, but the above will more than get you started.
The PDT project provides a PHP
Development Tools framework for the
Eclipse platform. This project
encompasses all development components
necessary to develop PHP and
facilitate extensibility. It leverages
the existing Web Tools Platform (WTP)
and Dynamic Languages Toolkit (DLTK)
in providing developers with PHP
capabilities.
You can have a try for eclipse.
http://www.eclipse.org/pdt/
Another one not mentioned in this thread (suitable for PHP and a lot of other dynamic languages):
Komodo Edit (free version of the Komodo IDE)
I really like using Netbeans and SqlSquirrel. Both of these tools are written in Java and they are cross platform compatible. Also an odd note about SqlSquirrel: It uses the Netbeans editor. Also, if you like there are many tutorials and articles on using PHP with Netbeans on their site. Overall, go with the toolset that you like the most. There isn't a single toolset that works with everyone, and for all problems.
I like Eclipse PDT, and it can be used both on Windows (which I use at work) and on Linux (which I use at home).
Features are quite the same as netbeans, I'd say ; especially, you've got nice stuff like graphical debugging, when used with Xdebug.
I'd say that, these days, when it comes to a modern full-IDE for PHP, that works on Linux, and is free, there are two choices : netbeans and Eclipse PDT. Which one you prefer is generally a matter of taste, as far as I can tell.
If you're happy with NetBeans, stick to that as you IDE. Learn to use Vim or emacs just for common knowledge. Use version control, Subversion and git are good choices.
The power of linux is in the command line. Whatever you do outside the IDE, learn to do it with command line. After a while you'll be comfortable with it and you'll discover that there's bunch of stuff you never want to do with GUIs anymore :)