Are they the same?
Maybe not. NMEA 2000 claims to be based on the SAE J1939 high-level protocols, but defines its own messages. The NMEA 2000 devices and J1939 devices can be made to co-exist in the same physical network. Even though they shall not disturb each other, they don't understand each other either. So, they are different.
Here are a few example:
Even though both are defined running at 250K baud rate, they are different at both hardware and software (protocol) levels:
Major hardware differences:
0: rule of thumb, everything related to NMEA 2000 also means,
expensive:(From devices to cable, from backbone to terminal resistors, etc. That's a point what SmartCraft is laughing at NMEA 2000.
1. NMEA 2000 requires opto-isolation, which is not required at J1939.
2. NMEA 2000 recommends Molex mini-c or micro-c five-pin connectors and cables (same or similar with DeviceNet cables), while J1939 recommends Deutch connectors (2 pin, 4 pin, 3 pin, and 9 pin connectors. 18 and 16 AWG wires recommended.).
3. NMEA 2000 max power is limited to 4A and 8A, J1939 has no such power requirements/limits.
4. NMEA 2000 needs dedicated network power supply for opto-isolation circuits, which is not required by J1939
5. NMEA 2000 opto-isolation might bring electric protection, but in the mean time also brings potential issue for CAN bit time synchronization. Network and software must be well laid out strictly with the NMEA 2000 standard. J1939 is robust enough to survive in a Truck and automotive environment and seems much friendly on network layout.
Major software differences:
1. NMEA 2000 needs expensive certification, which, however, doesn't guarantee working with other certified products. This is an expensive but useless feature. NMEA 2000 paid more attention on market and commercial rather than technology and innovation. J1939 protocol balanced the relationship between marketing and innovation much better.
2. NMEA 2000 Level A and Level B certification confuse end-users. Each product will have a different name, A-, A+, B, B+. This software mass doesn't exist at J1939.
3. NMEA 2000 uses dynamic name arbitration, J1939 uses pre-defined name (source addresses) for network nodes.
4. Software implementation in the NMEA 2000 network management is not so easy while J1939 network management is relatively easy.
5. NMEA 2000 was defined and claimed to be matured around year 2003. J1939 was released in the middle of 1980s.
Other differences:
1. NMEA 2000 protocols and documents are not so matured as J1939. For example, NMEA 2000 1.x and 1.y might not be compatible on some PGNs and SPNs. This has never happened on J1939 protocols.
2. NMEA 2000 protocol documents cost x times more than the J1939 protocols, which brings an heavy over-head to NMEA 2000 developers/users. This is one of the main reasons that the NMEA 2000 isn't so popular in the marine industry. The situation might change if NMEA 2000 defines itself as the "Linux" in the marine world.
3. NMEA 2000 is designed for Marine industry, but this industry is dominated by another CAN protocol: SmartCraft. J1939 is designed for on-highway industry and it is the de facto for USA diesel and truck industry.
Benefit from NMEA 2000:
1. After paying so much to NMEA organization, You will get a NMEA 2000 company name ID which will be a future J1939 ID too. (Free, kind of, if your business covers both NMEA 2000 and J1939)
Typical J1939 Network:

Typical Micro cable network:

Typical Mini cable network:
