I am looking for reusable open source components. The level of depth, breadth and hopefully quality that I'm looking for is similar to this.
Although I need them in programming languages C#, Java and Flex (which I often use in my projects), other languages such as PHP, Perl, Python, Ruby etc. are welcome. I see this as a big help for other programmers who have similar needs such as mine.
I plan to eliminate code duplication when building a large scale (in terms of code size) project by using this components and focus more on the business logic of it.
Is there an open source (Java) or Codeplex (Microsoft) component implementation that does this that I'm not aware of?
EDIT:
The main point that I want to address for this question is to avoid interdeveloper duplication. Interesting case found in Pragmatic Programmer: An audit for government computer systems have been made showed 10,000 different programs having their own version for Social Security number validation.
If I understand your question, that is what Apache Commons is all about.
I would point out that although such things are good, they aren't all upside. If all of those 10,000 programmers had to coordinate getting a SSN validation going, it would have been quite a bureaucracy to get anything done.
Similarly in general, one of the issues with apache commons is you might be integrating your code into something that uses an older (or newer) version of the same component.
Also, any code changes would have to be validated over a huge code base, and some times ugly workarounds made in the name of reuse.
Reuse and DRY are wonderful things, but like everything else, as you scale larger, there are tradeoffs.
Not quite sure of the context of the question, if you want UI components for web-based Java applications, maybe the JSF framework with a component library like Apache MyFaces which has several component libraries, or ICEfaces.
Well if you're after some flex components you could try some of the following, sorry I can't post hyperlinks I'm a new user so just copy paste text (this sucks - give me some reputition so that I can at least answer a question!)
link - code.google.com/p/flexlib/
link - www.adobe.com/devnet/flex/tourdeflex/ (this has examples and source code for components other than adobe products)
link - flexbox.mrinalwadhwa.com/
link - www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=15 (this has free and paid for components)
There are loads more open source flex components out there. Just check google.
Related
I want to start developing desktop java applications and I would like to know what the java community uses.
I started with Swing but I found it very rudimentary.
I'm used to work with .net c# WPF with Visual Studio 2010 and I was looking for something with the same quality (or close) with java ( Swing + Window builder is not an option )
I would appreciate your inputs, even if you disagree with my Swing opinion
thanks all
The other option you want want to look into is SWT (The toolkit Eclipse uses). It renders using mostly native components so it feels more robust like a real desktop application.
I'm looking for a better looking and feel development..
Swing offers 4 PLAFs as standard. There are at least a dozen more 3rd party PLAFs, some with dozens of variants. Of that plethora of possibilities, end-users generally prefer the 'native' PLAF - which looks and feels mostly like 'every other native app.' on their machine.
You can see a small app. that changes PLAF. on the Nested Layout Example. Here is the Mac. native PLAF.
..why do you think it is not easy?
This was said in relation to a general comment that it is harder to build a GUI in Swing than (for example) Visual Studio.
The reason for that is that Swing is intended to work on multiple platforms, screen-resolutions/sizes, PLAFs (and other factors). As such, 'dragging and dropping' components into their final position is impractical, since that might change according to the factors listed above. Instead Java relies on the concept of layout managers, which calculate the size and position of components as they appear at run-time.
The layout managers use 'logical groupings' of components to achieve the desired general shape expected of a GUI. The image above is an example of how to combine layouts to achieve different effects in different parts of the GUI.
Although I don't use GUI builders for Java I do feel that they can increase productivity, it is just a matter of:
Already knowing what Java Layouts are available, and how to use them.
Using the standard layouts in combination in the GUI, to achieve the desired effect.
If you don't mind an external dependency, you could also take a look at SWT. It's the framework that eclipse is built with, though it's not the easiest thing in the world to use.
It does provide a GUI-builder called SWT designer (if I remember correctly). It's not as good as what you're used to in Visual Studio though. That's a pretty high bar for quality. In the brief experience I have with it, there was a fair amount of boiler plate code, and the API isn't quite as intuitive as I'd like personally.
However, it is fairly widely used. Eclipse is built on it, and by extension, so are many professional tools built from that same base (Such as IBM's Rational tools, and Adobe's ColdFusion Builder). That should give you an idea of the power of the tool, if nothing else.
How about Java under Mono,using IVKM and Gtk?
You would be able to program in java, but your application would actually be .NET code... Not sure if that works for you.
If you want to move away from .NET alltogether, then perhaps you could use the java Gtk bindings:
http://java-gnome.sourceforge.net/
Check out JFormDesigner. JFormDesigner with Eclipse is a very powerful tool set. Also look for a good LaF. See The Alloy Look and Feel and JGoodies. You may find Look and feel in java useful.
hi I am planning to develop a site very similar to http://www.nextdaypets.com/ but with some more features...i have worked on JOOMLA n i know it pretty well. but there are few limitation like access level control and there is no component available for what i need. what i m confused about is that whether i should make that component in joomla or should i develop my own cms or should i take some .net based cms and write the component for it. I know C# and .net framework as a beginner. I just completed a certification course in .net last month and i don't know php but don't have issue in learning it...so what should i do...please suggest.
Well, as i understood , all you need to do is to adopt an open source CMS (joomla or drupal) and customise it. If you know a bit of php it will take you a day of expirementing to get familiar with making components & modules for joomla /drupal. Majority of the work you can do by customising the existing stuff and using third party open source components available already. The remaining small delta amount of work, you can code yourself.IF won't be that tough i can assure.
Developing a CMS of your own might not b a good option, as it takes a lot of effort to get a stable one with all features, currently being offered.
Also , if you have a doubt about the platform, i would suggest to stick on to open source platform, rather than Commercial one. The large number of OSComponents available as well as the large community support are factors defenitly you should consider.
writing your own cms is lots of work, so you should consider this carefully. Extending an existing framework could save you a lot of time.
In your case I'd choose a cms which fits well to my purpose and uses a language I'm familar with. So if you like C#, then look for an ASP.NET based cms. Of course, if you like to learn PHP joomla would be a good choise.
Usually, when I have to pick a platform I consider a certain number of variables. For example, does your customer want an open-source or a commercial platform? Is it concerned with being dependent on you for future changes to the system? Does he have already a hosting provider? Will he host the website himself? These are all tech-questions that should be kept in consideration.
I would strongly advice against writing your own CMS. That's a lot of work, and even the best and most tested products hide some bugs. Relying on something that already exists out there, it will speed your development up, as it will allow you to focus on the specific functionalities, and not on the overall system or basic features (client-server architecture, caching, views resolving, itemization, etc. ...).
I've worked quite a lot with many CMS, and in this period my attention is focused mainly on Umbraco, a .NET-based open-source CMS that has many interesting features. I personally don't like Drupal, Joomla, Wordpress, etc.
If you (or you customer) have money to spend and can afford a commercial platform, I would suggest you to take a look at Sharepoint or Sitecore; Sitecore is somewhat conceptually close to Umbraco, whereas Sharepoint is more extensive but there is more work to do to bring it up and running.
If you are looking for an e-commerce platform and PHP doesnt scare you, you could give a try to Magento.
I hope these few names can help you. I mentioned them because of my own personal experience and - to be honest - they are all good products...
Cheers,
Gianluca.
I am in the last year of undergraduate degree and i am stumped by the lack of example in c++ and c# large project in my university. All the mini project and assignment are based on text based database, which is so inefficient, and console display and command, which is frustrating.
I want to develop a complete prototype of corporate software which deals in Inventory, Sales, Marketing, etc. Everything you would usually find in SAP. I am grateful if any of you could direct me to a books or article or sample program.
Some of the question are :
How to plan for this kind of programming? should i use the concept of 1 object(such as inventory) have its own process and program and have an integrator sit for all the program, or should i integrate it in 1 big program?
How to build and address a database? i have little bit knowledge in database and i know SQL but i never address database in a program before. Database are table, and how do you suppose to represent a table in a OOP way?
For development type, which is better PHP and C++ or C# and ASP.NET? I am planning to use Web Interface to set form and information, but using a background program to handle the compute. .NET is very much integrated and coding should be much faster, but i really wonder about performance if compared to PHP and C++ package
thank you for the info
This may not answer your question directly, but I thought this might help you get started in some way. So here it goes: I would say, "think through the process". This means, think through the software development process:
Gather requirements
Identify and define the problem.
Get as much information/facts as you can. (turn on green light, think about everything that you want to go into your software)
Come up with a baseline (turn on red lights, what you really want? the minimum functionality your software "must have" - cant live without)
Analyze
Know what you don’t know, what are the missing facts?
Evaluate your information or lack of it/reliability of information source.
Infer facts that you don’t know.
Form an assumption, opinion, or possible solutions.
Consider alternatives and implications of each solution.
Form an action plan.
Identify technology pros/cons.
Decide technology
Comeup with a functional specs.
Research
Dig into stuff that you would want to know (Best database, ORM, design practices, code samples - gather everything, read about inventory systems that are already there)
Design
Develop
Test
Fix
Prepare deployment plan
Release the product
Gather user feedback
Analyze user feedback
Plan for items in next release.
Repeat steps
And Enjoy!
Before I start this is a shallow answer to a deep question.
1) It looks like you have a reasonable grasp of the major components of your target application. As a .net developer I'd build assemblies that matched broad areas of functionality (not sure what the equivalent is in PHP) and then you can use those assemblies together as a single large app, or seperately as required. It's unlikely you'll get it right first time, so build it how it feels right, and then do some ruthless refactoring to make it better once you've got a handled on the problem.
2) This whole area is covered by Object Relational Mapping - ORM, NHibernate is the best of the bunch in the .Net world. BTW if you learn that you'll be way ahead of the game come graduation/work time. Raw sql is so last decade. I guess you know that Sql Server Express is a free download?
3) For development go with the languages/environment you feel most comfortable in. My preference is .net, and the integrated coding is much faster. Performance is definitely good enough, especially as this is learning project - SO runs on .Net and that supports a gazillion users pretty well.
Enjoy
I don't have any good recommendations for SAP-like projects in particular, but in general the best examples to use for things like this are well-established open-source projects. Anything else is going to be a "toy" example in one way or the other, and will be simplified and cleaned up. It's the "cleaned up" that makes it most unrealistic -- one of the really key things that makes real-world large software projects different from university examples is that the real world is messy, and real-world requirements are messy, and collaboration between lots of people with not quite the same priorities is messy, and real-world software projects have to adapt to and thrive in this messiness.
In answer to your specific questions, though:
1.) Do things in a modular way. This means you have something you can test and work with as soon as you get the first module done. That's especially important when you're learning, because (a) you probably won't have time to actually finish the whole thing, (b) you'll learn a lot from writing the first bit that you'll want to apply in future bits and then you'll probably want to rewrite the first bit, and (c) you'll learn even more from using the first bit.
2.) There are many views on this, and many online articles and books. I can't answer that in an answer here (except to note that in some cases trying to represent it in an OOP way is the wrong programming paradigm -- be careful about overconstraining the answer by the question you ask!); the right answer is to find things to read and spend some days reading them.
3.) You do not care about that sort of performance issue here. Successful programs have been written in both forms. You care about what will teach you the most, and what you are comfortable working with. Either one should be fine. You'll probably find more open-source pieces to look at with PHP and C++.
Your question pretty much covers the whole gamut of planning for a project; a whole thesis might be written (+:
Keep in mind what your team and your teaching-staff want out of the project.
1) Modular is my choice. It'll force you to address the application one module at a time and keep you focussed, but that is subject to
The familiarity of your team with the preferred/recommended language for this project.
Time in hand
Remember that modular means you will necessarily have to provide for module integration too.
2) C++ or C# ? Whichever offers the more learning experience. My own experience with both mentioned technologies is limited, but I remember there used to be a Database Template Library (DTL). C# on the other hand will probably be faster to develop. I could be wrong. There are any number of free DBMS engines available on the net. Unless the assignment explicitly recommends using a text, opt for one of these.
3) I concur w/Brooks up there ^^^
Good Luck!
You are a university undergraduate. And you are talking about complete inventory system.
I suggest building a blog application first with all the best practices (like blogengine), then move to e-commerece sites (nopcommerce, dotcommerce). And then do whatever you like.
This is a common problem with undergrads like you, of jumping way higher without building any simple projects first.
As a full time PHP developer, PHP sucks! ASP.net is okay (mmm... no it sucks too), but it locks you into proprietary licenses.
If you're starting from scratch, go for node.js. It's c++ and server-side javascript. Yes, it's new, but it has engineering promise. It'll be more commonplace in a few years.
And if you're worried about performance, don't. Javascript in V8 is extremely fast.
http://shootout.alioth.debian.org/u32/which-programming-languages-are-fastest.php
Here are some node.js links to get you started:
http://www.delicious.com/homer6/nodejs
Enjoy.
I am new to C#, C++ and .Net.
I am currently returning to programming from a stint in Networking and Cisco engineering. I used to program on IBM mainframes etc using Cobol, assembler, easytrieve, Rexx and clist etc so the command syntax is reasonably familiar to me as are programming standards and structures.
However I am having quite a bit of trouble getting to grips with the BCL and understanding the various components and what each is designed for and which is best to use in various situations, and in fact how some are actually used and coded.
I am often scratching my head wondering how the code came about from the descriptions I have found about the BCL components. Basically how to use them and code them seems to be a black art with no intuitive means at all.
So my question is, apart from the msdn library, which I am finding to be a bit over complicated for my current needs, is there any good reference book, site, pdf that can give me a reasonable description, usage notes etc of the most commonly used .NET components such as System.IO etc ?
I have read a few book on C# etc and have found a small program that does part of what I need to do in a project I have, requiring acces to devices via RS-232 ports, but when decoding the program I find myself wondering why the person used the components he did and how would I know which components I should use when I make the changes I need to and add in the extra code that I require and how do I actually use these components when I do find them ?
I do realise a lot of this will be down to plain old experience, but a helping hand in the right direction would really help a lot.
Many thanks, George.
C# 3.0 in a Nutshell is good for this, as is Accelerated C# 2008. I think I'd personally recommend Nutshell more.
Note that the next edition of Nutshell is being prepared - but I don't know what the timeframe is. (I'm sure there'll be a slew of books for .NET 4.0.)
(Note of bias: I'm a tech reviewer for C# 4.0 in a Nutshell, so I'm clearly not 100% impartial.)
I often use Google in preference to the standard Help, there are often better examples out there.
I'm a little ashamed for asking this, because, you know, I've been very anti-MS for a long time. I have been fortunate enough as to make a living outside Visual Studio. As I grown older there are "some" things I would like to try, and to be very honest, this Q&A site has inspired me and I realize that VS and Windows Development doesn't suck that much. Hey, after all C# was designed after Java, and now Java is copying back some features from the child language. And Windows vista is the first decent version since windows came to light.
Anyway, to any +3,000 user in the audience, you may delete all the above crap and keep the following:
Do you have, links, resources, tutorial aimed to learn Windows development coming from strong Java background?
I'm very interested in Windows manipulation (that is the actual window, the frame, get the name, get foremost app etc., resize it programatically, etc.) and in Windows Search API among other minor API's. My interest after all is to integrate them with my Java apps through JNI or JNA.
I've read many tutorials and links over the MSDN, and I actually understand the API it self. I've grabbed a copy of C# and C++ Express and actually got some basic samples running.
My problem is I don't get the big picture of the whole architecture (because, well, it is big). The classes have hundreds of methods, and it not that clear to me who calls them. (I had this same opinion when I first look at the Java's Javadoc API.) I don't know some basic common objects, for instance HWCD (or something like that) that it turned out to be the very window handler, but every single tutorial I read give that for granted (as if WHCD or what ever it is, was a very descriptive name).
I don't know exactly the difference between Win32, COM, COM+, DCOM, Windows SDK ADO, and some other technologies. I mean, I know them at some degree and by common sense, but while reading the tutorials or the API I get confused. I've tried to grab some "beginner" tutorials, but they are aimed for absolute 0 programmers using Visual Basic (yiak! , THAT was the main reason I kept away from MS for so many years in first place.)
I do understand .NET framework, managed code, unmanaged code, C# basics, CLR and related stuff, because well, they are SO similar to the Java platform that it is almost transparent.
So, after all my rants and honest opinions about MS development:
What's the best way to learn Windows Development for a non absolute beginner (in programming) but absolute new to Windows APIs itself? What would be a good path?
The Petzold is your new best friend, and MSDN is your new Javadocs. Make sure you have a good understanding of C before you dive into it though. The Forger has a great beginner tutorial too if you're interested. A great place to hang out while learning is #WinProg on efnet irc, plenty of win32 gurus ready to help.
I'm going to suggest an alternate path (with less resistance). Have you looked at WPF yet? It's the new GUI toolkit that lets you create sexy interfaces (like those found in Vista).
That may be enough to keep you interested while easing into more advanced development. From there you can jump into the jungle of the Win APIs (if you choose).
Just a thought, as that path would be more interesting for me. Your mileage may vary, of course.
I strongly recommend getting yourself a copy of "Win32 Programming". It explains the basic DNA of WINDOWS - and this is valid if you are programming with the old C++ win32, the new C# WinForms and also the future Windows Presentation Foundation.
In a nutshell, a Windows program consists of a WinMain. When first started the app registers its window class with the system, initializes and then starts a message loop which continues till WM_QUIT is encountered. The system (OS) keeps pumping messages like keyboard or mouse click etc to the message Q of the application. In Windows, at any point of time there is only one active Window - so the OS knows whom to send the message to.
Well things like these are described in detail in the above book.
COM (COM+, DCOM) are not really related to Windows. When Word, Excel became popular and it was required to be able to access Excel from Word (viceversa) they came up with the AcitveX technology which is kind of the root for COM etc. You can get started with "Essential COM" by Don Box.
One warning: in the Microsoft world, there are two ways to program - to go the boiler plate way (write everything yourself) or use frameworks (MFC, ATL-COM....). It is recommended to do a bit of boiler plate so that you know the basics.
Having made the same conversion a year ago I can say that there's a lot of literature specifically for learning c# from a Java background. This was my first into which I found really useful for learning the important differences / features of C#:
C# from a Java developer's perspective
And there are also books which may be worth a look at (google 'c# for java programmers'). As JohnT said MSDN library is the equivalent of JavaDocs API, but I found it really frustrating to use. The best way to learn is to grab a copy of Visual Studio express and start playing around. Use intellisense to explore classes and methods. Find a small program you wrote in Java and try to reproduce it in C#. Start with simple problems, use google to solve them. You'll find it hard for the first week, but trust me, it will come to you surprisingly quickly!